我有两个数据框,我想通过应用一个简单的函数使用它们创建第三个数据框。数据集非常大,因此除了遍历每一行和每一列之外,还有没有更有效的方法?
# dfA
id | value |
mars | 10 |
jupt | 15 |
satn | 14 |
# dfB
id | A | B | C |
satn | 0.5 | 0.3 | 0.2 |
mars | 0.2 | 0.5 | 0.3 |
jupt | 0.6 | 0.3 | 0.1 |
最终结果应该是dfA
与id
中相应的dfB
的乘积
# dfResult
id | A | B | C |
mars | 10*0.2 | 10*0.5 | 10*0.3 |
jupt | 15*0.5 | 15*0.3 | 15*0.1 |
satn | 14*0.5 | 14*0.3 | 14*0.2 |
答案 0 :(得分:3)
使用DataFrame.set_index
进行匹配,乘以DataFrame.mul
,最后从index
创建一列:
df = dfB.set_index('id').mul(dfA.set_index('id')['value'], axis=0).reset_index()
print (df)
id A B C
0 jupt 9.0 4.5 1.5
1 mars 2.0 5.0 3.0
2 satn 7.0 4.2 2.8