如何将数据框的列的所有元素与另一个数据框中为该列指定的值相乘?

时间:2017-02-23 04:33:13

标签: python pandas dataframe

我的问题与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

2 个答案:

答案 0 :(得分:4)

您可以先在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

答案 1 :(得分:1)

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

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]