переписать группу, используя .agg (лямбда) вместо .apply (лямбда) - PullRequest
2 голосов
/ 16 мая 2019

Можно ли переписать приведенное ниже выражение в терминах .agg?

У меня есть

sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).apply( lambda df, a, b: sum(df[a] * df[b]),'carry_rate', 'notional_current')

, которое выдает

prime_broker_id  country_name
CITI             AUSTRALIA       4.929853e+10
                 HONG KONG       2.565716e+11
                 INDONESIA       3.508484e+09
                 JAPAN           9.608675e+11
                 MALAYSIA        9.459922e+10
                 NEW ZEALAND     2.479546e+08

Я быхотел бы переписать это как:

sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).agg(
        {"": lambda }

Как я могу получить тот же вывод (показанный выше), переписав groupby в терминах .agg?Я предпочитаю этот формат, поскольку я могу легко переименовать столбец и добавить другие операции, такие как сумма и средние значения

Большое спасибо

1 Ответ

1 голос
/ 16 мая 2019

Я полагаю, что вы сможете сделать это следующим образом (с дополнительным вычисляемым столбцом в вашем фрейме данных):

sampleGC['calculated'] = sampleGC['carry_rate'] * sampleGC['notional_current']

res = sampleGC.groupby(['prime_broker_id', 'country_name'], as_index=False).apply(lambda gb: gb['calculated'].agg('sum'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...