Группировка по двум полям в DataFrame

Имеется некий набор данных tr_new, в нем есть столбец mcc_code, tr_day, amount:

    mcc_code    amount  tr_day
0   4814    -2245.92    0
1   4814    -5614.79    6
2   4814    -1122.96    8
3   4814    -2245.92    11
4   4814    -2245.92    11
... ... ... ...
998285  6010    606397.26   178
998286  6010    11319.42    370
998287  6010    -44117.20   109
998295  5411    3897.56 440
998296  5411    20843.67    389


Делается группировка:

mccmax = tr_new.groupby(['mcc_code']).filter(lambda x: len(x) > 60000)

Я хочу дополнительно сгруппировать по tr_day чтобы вначале шел номер дня tr_day потом mcc_code и вычислить среднюю сумму операций за этот день по этому mcc коду.

Пишу:

mccmax = tr_new.groupby(['tr_day','mcc_code']).filter(lambda x: len(x) > 60000).mean()

Но получается совсем не то.


Ответы (1 шт):

Автор решения: MaxU

Попробуйте так:

res = (tr_new
       .groupby(['tr_day','mcc_code'])
       .filter(lambda x: len(x) > 60000)
       .groupby(["tr_day", "mcc_code"])
       ["amount"]
       .mean()

PS в таких вопросах лучше всегда приводить небольшие примеры входных данных и результат, который вы хотите получить. Без этих данных ответы не могут быть протестированы и могут содержать ошибки.

→ Ссылка