我有一个数据框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
什么是最好的方法?我不确定如何在两列中加入这些内容。我知道我可以先合并然后再乘以两列,但是我想知道是否有比先合并然后再乘除不需要的列更好的方法?
答案 0 :(得分: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
答案 1 :(得分:2)
您可以merge并将它们相乘:
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
答案 2 :(得分:1)
df = pd.merge(left=df1, right=df2, on=['Name','Event'], how='inner']
df['FactorResult'] = df['Factor1'] * df['Factor2']
df = df[['Name', 'Event', 'FactorResult']]