我的问题与Multiply two pandas DataFrames based on column和Multiply 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
答案 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]