我希望用匹配索引将两个数据帧按元素相乘,使用字典映射要相乘的列.我只能想出复杂的方法来做这件事,我相信有更好的方法,真的很感谢你的帮助!谢谢!

df1:

Index ABC DEF XYZ
01/01/2004 1 2 3
05/01/2004 4 7 2

df2:

Index Echo Epsilon
01/01/2004 5 10
05/01/2004 -1 -2

字典d = {'ABC': 'Echo', 'DEF': 'Echo', 'XYZ': 'Epsilon'}

预期结果:

Index ABC DEF XYZ
01/01/2004 5 10 30
05/01/2004 -4 -7 -4

推荐答案

您可以使用:

# only if not already the index 
df1 = df1.set_index('Index')
df2 = df2.set_index('Index')

df1.mul(df2[df1.columns.map(d)].set_axis(df1.columns, axis=1))

或:

df1.mul(df2.loc[df1.index, df1.columns.map(d)].values)

输出:

            ABC  DEF  XYZ
Index                    
01/01/2004    5   10   30
05/01/2004   -4   -7   -4

Python相关问答推荐

替换字符串中的多个重叠子字符串

将两只Pandas rame乘以指数

如何制作10,000年及以后的日期时间对象?

删除字符串中第一次出现单词后的所有内容

递归访问嵌套字典中的元素值

为什么NumPy的向量化计算在将向量存储为类属性时较慢?'

在Django admin中自动完成相关字段筛选

CommandeError:模块numba没有属性generated_jit''''

网格基于1.Y轴与2.x轴显示在matplotlib中

Pandas:计算中间时间条目的总时间增量

如何在海上配对图中使某些标记周围的黑色边框

计算空值

从源代码显示不同的输出(机器学习)(Python)

如何在Python中将超链接添加到PDF中每个页面的顶部?

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何使用pytest在traceback中找到特定的异常

Seaborn散点图使用多个不同的标记而不是点

比较两个有条件的数据帧并删除所有不合格的数据帧

从列表中分离数据的最佳方式

将多行数据循环到嵌套框架中的单行