我有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/

10-15 22:57