我有 2 个数据框,一个按月采样,另一个按日期时间索引按年采样。
如果是同一年,我想将月度数据框中列的值乘以年度数据框中列的值。我该怎么做?
非常感谢您的帮助,
df = pd.DataFrame({'column1' : [1, 1, 1, 2, 2]}, index=['2018-01-01', '2018-01-02', '2018-01-03', '2019-01-03', '2019-01-02'])
df.index= pd.to_datetime(df.index)
df
column1
2018-01-01 1
2018-01-02 1
2018-01-03 1
2019-01-03 2
2019-01-02 2
df2 = pd.DataFrame({'columnX' : [2, 3]}, index=['2018', '2019'])
df2.index= pd.to_datetime(df2.index)
df2
columnX
2018-01-01 2
2019-01-01 3
预期结果:
df
Column1 Results
2018-01-01 1 2
2018-01-02 1 2
2018-01-03 1 2
2019-01-03 2 6
2019-01-02 2 6
请您参考如下方法:
In [57]: df = (df.assign(y=df.index.year)
...: .merge(df2.assign(y=df2.index.year), how='left')
...: .eval("Results = column1 * columnX")
...: .drop(['columnX','y'],1)
...: .set_index(df.index))
...:
...:
In [58]: df
Out[58]:
column1 Results
2018-01-01 1 2
2018-01-02 1 2
2018-01-03 1 2
2019-01-03 2 6
2019-01-02 2 6
