数量で段階価格を判定する【Python>pandas】

数量によって単価が変化する価格表(いわゆる「段階価格」や「スライディング価格」)をExcelで管理していて、Pythonで図番と数量を入力すると該当する単価を抽出したい

◆Excel
・価格表.xlsx
図面番号/数量

・注文書.xlsx
図面番号/下限数量/上限数量/単価

◆コード


import pandas as pd

# 注文書と価格表の読み込み
df = pd.read_excel("注文書.xlsx")
df_kakaku = pd.read_excel("価格表.xlsx")

# 単価を検索する関数
def 単価検索(row):
    zumen = row['図面番号']
    suuryo = row['数量']
    
    # 該当する図面番号の価格帯を抽出
    kakaku_rows = df_kakaku[df_kakaku['図面番号'] == zumen]
    
    # 数量に該当する単価を抽出
    match = kakaku_rows[(kakaku_rows['下限数量'] <= suuryo) & (kakaku_rows['上限数量'] >= suuryo)]
    
    if match.empty:
        return None  # 該当なし
    return match.iloc[0]['単価']

# 注文書に単価列を追加
df['単価'] = df.apply(単価検索, axis=1)

# 出力
df.to_excel("output.xlsx", index=False)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です