Использование groupby и условия
Необходимо посчитать дисперсию (столбец amount) по категориям получившегося столбца mcc_code+tr_type, в которых количество наблюдений >= 10. Таблица (df_trans_copy) состоит из следующих столбцов: mcc_code+tr_type, customer_id, tr_datetime, mcc_code, tr_type, amount, term_id, gender, tr_description, mcc_description.
Информация о типе данных:
# Column Dtype
--- ------ -----
0 customer_id int64
1 tr_datetime object
2 mcc_code int64
3 tr_type int64
4 amount float64
5 term_id object
6 gender float64
7 tr_description object
8 mcc_description object
9 mcc_code+tr_type object
Что пробовал:
- Получил условие, которое выбирает наблюдения >=10
cond_1 = (df_trans_copy.groupby('mcc_code+tr_type')['mcc_code+tr_type'].count() >= 10)
- Улучшил его, получив по сути список всех ['mcc_code+tr_type'], которые мне подходят:
cond_2 = cond_1[lambda x: x == True]
Как применить полученное условие (cond_1 или cond_2)? Пробовал по-разному, не получается, выдает различные ошибки. Например:
grouped = df_trans_copy.groupby('mcc_code+tr_type')
grouped[cond_1]
Ошибка: 'Columns not found: False, True'
или
grouped[df_trans_copy.index in cond_2.index]
Ошибка: unhashable type: 'Int64Index'
или
grouped[df_trans_copy['mcc_code+tr_type'] in cond_2]
Ошибка: unhashable type: 'Series'
Дисперсию же планировал посчитать следующим шагом.
Источник: Stack Overflow на русском