2017-02-23 12 views
1

我的问题与Multiply two pandas DataFrames based on columnMultiply two data frames with similar index in python pandas很相似,但有点不同。我尝试了这两个建议,但它对我没有帮助。如何将数据框的列的所有元素与另一个数据框中为该列指定的值相乘?

我所有的输入都是从csv文件中读取的。

输入1

Attr1 Attr2 
0  10  20 
1  30  40 

假设输入2指定attR1和attR2位

权重

输入2

Attr1 Attr2 
0  5  6 

我的输出将被从输入2的权重相乘来的每一个行输入1中的相应属性,所以我的输出需要为

Attr1 Attr2 
0  50  120 
1 150  240 

回答

3

您可以先在d2选择第一行 - 输出Series,然后通过多mul

print (d2.iloc[0]) 
Attr1 5 
Attr2 6 
Name: 0, dtype: int64 

d = d1.mul(d2.iloc[0]) 
print (d) 
    Attr1 Attr2 
0  50 120 
1 150 240 
+0

谢谢,成功了! – user2237511

0

这里一个可能的解决方案:

import pandas as pd 


d1 = pd.DataFrame([[10, 20], [30, 40]], columns=['Attr1', 'Attr2']) 
d2 = pd.DataFrame([[5, 6]], columns=['Attr1', 'Attr2']) 

# iterate over columns of the second dataframe 
for col in d2.columns: 
    # you can check whether col is in d1 
    # if col in d1.columns: 
    d1[col] = d1[col] * d2[col][0] 
相关问题