使用相应的列名将两个熊猫数据帧相乘

时间:2020-08-19 03:02:45

标签: python pandas

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

例如,在数据框“ A”中,收入可能是第三列,但在数据框“ 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]})

我想将它们相乘。绝对不能保证每列的位置都在同一位置。有什么“聪明”的方法吗?为此。

我把代码放在哪里,我要查找列名的交集,然后按字母顺序对它们进行排序,然后相乘,但是我想知道还有一些更聪明的东西吗?

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

3 个答案:

答案 0 :(得分:1)

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

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)

结果enter image description here

答案 1 :(得分:0)

我认为这不是执行此操作的最有效方法,但是可以起作用:

name = "income"

for col1 in df1.columns:
    for col2 in df2.columns:
        if (col1 == name) and  (col2 == name):
            multiplied = df1[col1] * df2[col2]

multiplied是一个系列。

答案 2 :(得分:0)

您可以做类似的事情

df3 =pd.DataFrame() 
for colname in df1.columns:
    df3[colname] = df1[colname] * df2[colname]

这很有用,因为df1和df2中有更多列