Группировка по двум полям в 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 в таких вопросах лучше всегда приводить небольшие примеры входных данных и результат, который вы хотите получить. Без этих данных ответы не могут быть протестированы и могут содержать ошибки.