Pandas,在多个列上合并两个数据帧,并乘以resu

2024-09-28 22:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,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

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


Tags: 数据方法name名称event事件john因子
3条回答

如果数据帧的标签相同,则不需要合并

(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

你可以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
df  = pd.merge(left=df1, right=df2, on=['Name','Event'], how='inner']
df['FactorResult'] = df['Factor1'] * df['Factor2']
df = df[['Name', 'Event', 'FactorResult']]

相关问题 更多 >