熊猫,在多列上合并两个数据框,并将结果相乘

新手上路,请多包涵

我有一个数据框 df1,看起来像这样:

 Name Event Factor1
John A     2
John B     3
Ken  A     1.5
....

和一个额外的数据框,df2 是这样的:

 Name Event Factor2
John A     1.2
John B     .5
Ken  A     2

我想将这两个数据框加入名称和事件两列,结果列因子 1 和 2 相互相乘。

 Name Event FactorResult
John A     2.4
John B     1.5
Ken  A     3

最好的方法是什么?我不确定如何将它们加入两列。我知道我可以加入然后乘以两列,但我想知道是否有比先合并它们,然后乘以和删除不需要的列更好的方法?

原文由 remh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 346
2 个回答

你可以 合并 它们并使它们相乘:

 merged = df1.merge(df2, on=['Name', 'Event'])
merged['ResultFactor'] = merged.Factor1 * merged.Factor2
result = merged.drop(['Factor1', 'Factor2'], axis=1)

print(result)

输出

   Name Event  ResultFactor
0  John     A           2.4
1  John     B           1.5
2   Ken     A           3.0

原文由 Dani Mesejo 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您的数据框具有相同的标签,则无需合并,

 (df1.set_index(['Name', 'Event'])['Factor1'] * df2.set_index(['Name', 'Event'])['Factor2']).reset_index(name = 'FactorResult')

    Name    Event   FactorResult
0   John    A       2.4
1   John    B       1.5
2   Ken     A       3.0

原文由 Vaishali 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题