将两个单独的数据帧相乘

时间:2019-07-12 10:57:08

标签: python pandas dataframe

我有两个数据框,我想通过应用一个简单的函数使用它们创建第三个数据框。数据集非常大,因此除了遍历每一行和每一列之外,还有没有更有效的方法?

# 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 |

最终结果应该是dfAid中相应的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 |

1 个答案:

答案 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