Pandas,在多列上合并两个数据帧,并将结果相乘

rem*_*emh 3 python dataframe pandas

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

Name Event Factor1
John A     2
John B     3
Ken  A     1.5
....
Run Code Online (Sandbox Code Playgroud)

和另一个数据帧,df2像这样:

Name Event Factor2
John A     1.2
John B     .5
Ken  A     2
Run Code Online (Sandbox Code Playgroud)

我想在名称和事件两列上加入这两个数据帧,结果列因子1和2相互相乘.

Name Event FactorResult
John A     2.4
John B     1.5
Ken  A     3
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?我不确定如何在两列上加入这些.我知道我可以加入然后将两列相乘,但我想知道是否有一种比先合并它们更好的方法,然后乘以和丢弃不需要的列?

Dan*_*ejo 9

你可以合并它们相乘:

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

print(result)
Run Code Online (Sandbox Code Playgroud)

输出

   Name Event  ResultFactor
0  John     A           2.4
1  John     B           1.5
2   Ken     A           3.0
Run Code Online (Sandbox Code Playgroud)


Vai*_*ali 5

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

(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
Run Code Online (Sandbox Code Playgroud)