Использование Pandas для отображения результатов groupby.sum () на другой фрейм данных? - PullRequest
1 голос
/ 08 октября 2019

У меня есть два фрейма данных, один из которых представляет собой микроуровень, содержащий все позиции, купленные во всех транзакциях (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 ['action_id '], и я хочу связать его с df2 ['action_id']

Вот то, что я в настоящее время пробовал, но пытаюсь собрать вместе,

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

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Использование карта :

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
0 голосов
/ 09 октября 2019

Использовать карту:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...