python - Pandas:如果是同一年,则将一列乘以另一列

标签 python pandas

我有 2 个数据框,一个每月采样,另一个每年采样。

如果是同一年,我想将每月数据框中的列值乘以每年数据框中的列值。我怎样才能做到这一点?

df1 = pd.DataFrame({'column1' : [1, 1, 1, 2, 2]}, index=['2018 - 01', '2018 - 02', '2018 - 03', '2019 - 01', '2019 - 02'])
df1

           column1
2018 - 01        1
2018 - 02        1
2018 - 03        1
2019 - 01        2
2019 - 02        2

df2 = pd.DataFrame({'columnX' : [2, 3]}, index=['2018', '2019'])     
df2

      columnX
2018        2
2019        3

预期结果:

               column1
2018 - 01            2
2018 - 02            2
2018 - 03            2
2019 - 01            6
2019 - 02            6

最佳答案

您可以创建多个索引,然后执行 mul(multiple)

df1['mul']=df1.set_index(df1.index.str[:4],append=True).mul(df2.columnX,level=1,axis=0).values
df1
Out[123]: 
           column1  mul
2018 - 01        1    2
2018 - 02        1    2
2018 - 03        1    2
2019 - 01        2    6
2019 - 02        2    6

关于python - Pandas:如果是同一年,则将一列乘以另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944893/

相关文章:

python - 如何在 python 64bit 中枚举模块

python - 元组索引超出范围? python 3.4.2

python - 如何更改 .describe() 输出的格式?

python - 使用 pandas json_normalize 展平 JSON 数据

python - 根据另一个数据框中具有最小/最大值的列从 pandas 数据框中选择值

python - 根据条件在 df 的新列中添加值

python - 最小的、独立的、可分发的、跨平台的网络服务器

jquery - 如何将搜索到的单词保留在第二个结果页面上

python - 有没有办法在 python pandas 中将基于时间的事件划分为小时模板?

python - 附加到 python/pandas 中的系列不起作用