首页 > 解决方案 > 使用对应的列名将两个 pandas 数据帧相乘

问题描述

我有熊猫数据框,它们至少共享一些常见的列名。列名的位置不保证相同,但如果它们共享一个通用名称,我想将它们相乘。

例如,在数据框“A”中,收入可能是第 3 列,但在数据框“B”中,收入可能是第 11 列。有没有办法可以使用常见的列名将它们相乘?

df1=pd.DataFrame({'a':[1,3,5],'c':[10,20,40],'b':[8,6,4]})
df2=pd.DataFrame({'b':[1,33,5],'a':[10,200,7],'c':[0,6,1]})

我想将这些相乘。永远不能保证每列的位置都在同一个位置。有什么“聪明”的方法吗?去做这个。

我已经将代码放在一起,我会在其中查找列名的交集,然后按字母顺序对它们进行排序,然后相乘,但我认为有一些更智能的东西?

抱歉,如果这是一个太明显的问题,我只是认为 pandas 中必须有一些聪明的东西,不需要我编写 20 行代码。

标签: pythonpandas

解决方案


您可以将它们相乘。只要它们具有相同的列名和行号

import pandas as pd

df1=pd.DataFrame({'a':[1,3,5],'c':[10,20,40],'b':[8,6,4]})
df2=pd.DataFrame({'b':[1,33,5],'a':[10,200,7],'c':[0,6,1]})

df = df1 * d2

print(df)

结果在此处输入图像描述


推荐阅读