Skip to main content
 首页 » 编程设计

python之如果是同一年,则将一列乘以另一列

2025年05月04日13emanlee

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