Я использую шаблон split-apply-combine в пандах, чтобы сгруппировать мой df с помощью пользовательской функции агрегации. Но это возвращает нежелательный DataFrame с сгруппированным столбцом, существующим дважды: в MultiIndex и столбцах.
Ниже приведен упрощенный пример моей проблемы.
Скажем, у меня есть этот дф
df = pd.DataFrame([[1,2],[3,4],[1,5]], columns=['A','B']))
A B
0 1 2
1 3 4
2 1 5
Я хочу сгруппировать по столбцу A и сохранить только те строки, где B имеет четное значение. Таким образом, желаемый df таков:
B
A
1 2
3 4
Пользовательская функция my_combine_func должна выполнять фильтрацию. Но применение его после groupby приводит к MultiIndex с прежним индексом на втором уровне. Таким образом, столбец A существует два раза.
my_combine_func = group[group['B'] % 2 == 0]
df.groupby(['A']).apply(my_combine_func)
A B
A
1 0 1 2
3 1 3 4
Как применить функцию пользовательской группы и получить желаемый df?