数量によって単価が変化する価格表(いわゆる「段階価格」や「スライディング価格」)を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)