我有2个数据帧,如下所示:
df1:
id Grade Date
1 78 15 2016-05-23
2 99 12 2015-08-01
df2:
rate
2015-01-01 1.22
2015-02-01 1.12
...
2015-05-01 1.05
2017-01-01 1.33
我想将df1中的等级乘以具有相同月份的df2中的费率。
因此,对于2016-05-23,它是在05月份,因为我会将其1.05倍多。
有什么建议么 ?
谢谢你的帮助
最佳答案
如果将df2索引设置为每月PeriodIndex
:
In [11]: df2.index = df2.index.to_period("M")
In [12]: df2
Out[12]:
rate
2015-01 1.22
2015-02 1.12
2016-05 1.32
2015-08 1.23
现在,您可以使用
df2.loc
有效地提取费率:In [13]: df2.loc[df1.Date.dt.to_period("M")]["rate"]
Out[13]:
2016-05 1.32
2015-08 1.23
Freq: M, Name: rate, dtype: float64
现在,您可以乘以:
In [14]: df2.loc[df1.Date.dt.to_period("M")]["rate"].values * df1["Grade"]
Out[14]:
1 19.80
2 14.76
Name: Grade, dtype: float64
In [21]: df1["NormedGrade"] = df2.loc[df1.Date.dt.to_period("M")]["rate"].values * df1["Grade"]
In [22]: df1
Out[22]:
id Grade Date Normed Grade
1 78 15 2016-05-23 19.80
2 99 12 2015-08-01 14.76
关于python - 使用日期进行数据框操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43949089/