使用Pandas将groupby.sum()的结果映射到另一个数据帧?

2024-05-21 02:24:59 发布

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

我有两个数据帧-一个是包含所有交易(DF1)中购买的所有行项目的微观级别。将构建另一个数据框架,其目的是作为一个更高级别的聚合,汇总每笔交易产生的收入,基本上汇总每笔交易的所有行项目(DF2)

df1
Out[df1]:
   transaction_id item_id amount
0  AJGDO-12304     120     $120
1  AJGDO-12304     40      $10
2  AJGDO-12304     01      $10
3  ODSKF-99130     120     $120
4  ODSKF-99130     44      $30
5  ODSKF-99130     03      $50


df2
Out[df2]
    transaction_id    location_id      customer_id   revenue(THIS WILL BE THE ADDED COLUMN!) 
    0  AJGDO-12304          2131234       1234        $140
    1  ODSKF-99130          213124        1345        $200

如何链接groupby.sum()的输出并将其分配给df2?收入列实质上是df1['transaction\u id']的收入聚合,我想将其链接到df2['transaction\u id']

这是我目前尝试过的,但我正在努力拼凑

results = df1.groupby('transaction_id')['amount'].sum()
df2['revenue'] = df2['transaction_id'].merge(results,how='left').value

Tags: 数据项目id链接交易outamounttransaction
2条回答

使用map

lookup = df1.groupby(['transaction_id'])['amount'].sum()
df2['revenue'] = df2.transaction_id.map(lookup)

print(df2)

输出

  transaction_id  location_id  customer_id  revenue
0    AJGDO-12304      2131234         1234      140
1    ODSKF-99130       213124         1345      200

使用地图:

lookup = df1.groupby(['transaction_id'])['amount'].sum()
df2['revenue'] = df2.transaction_id.map(lookup)

print(df2)
Output

  transaction_id  location_id  customer_id  revenue
0    AJGDO-12304      2131234         1234      140
1    ODSKF-99130       213124         1345      200

相关问题 更多 >