如果你能只靠其在df2
一個月的一個實例,這裏有一個工作解決方案:
首先,根據OP的例子生成樣本數據。
請注意,df2
中的第一個日期已更改爲演示兩個不同月份數的功能。
df1 = pd.DataFrame([[78, 15, "2016-05-23"],
[99, 12, "2015-08-01"]],
columns=['id', 'Grade', 'Date'])
df2 = pd.DataFrame([["2015-08-01", 1.22],
["2015-02-01", 1.12],
["2015-05-01", 1.05],
["2017-01-01", 1.33]],
columns=['Date','rate'])
現在從每個DataFrame
提取一個月的數字並保存爲新列:
df1['month_num'] = pd.to_datetime(df1.Date).dt.month
df2['month_num'] = pd.to_datetime(df2.Date).dt.month
最後,計算的df1.Grade
和產品相關的rate
:
df1['Grade_X_rate'] = df1.Grade.multiply(df1.merge(df2[['month_num','rate']],
on="month_num",
how="left").rate
)
id Grade Date month_num Grade_X_rate
0 78 15 2016-05-23 5 15.75
1 99 12 2015-08-01 8 14.64
還能有多重'df2'中同一月的情況?如果同一個月出現在'df2'的兩個不同年份呢?預期產出的最終形式是什麼?你到目前爲止還沒有嘗試過什麼? –