我有熊猫数据框,它们共享至少一些公用的列名。列名的位置不能保证相同,但是如果它们使用相同的名称,我想将它们相乘。
例如,在数据框“ 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行代码。
答案 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)
结果
答案 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中有更多列