Как сделать группировку по двум параметрам и получить на выходе вложенный словарь без кортежа?
В датафрейме в одном столбце "Номер" есть повторяющиеся значения для группировки, во втором столбце "Пол" либо М, либо Ж. Группировка требуется по 2-ум столбцам для подсчета количества М и Ж в каждом пуле, объединенном по номеру столбца "Номер".
Такой вариант возвращает в качестве ключа кортеж:
def file_stats(df):
stat = {}
# Количество М и Ж
sex = df.groupby(['Номер', 'Пол'])['Пол'].size()
sex = sex.to_dict()
stat['sex'] = sex
print(stat)
Результат:
{'sex': {(1, 'Ж'): 10, (1, 'М'): 35, (2, 'Ж'): 15, (2, 'М'):9}}
Однако требуется на выходе получить следующий словарь:
{'sex': {1: {'Ж': 10, 'М': 35}}, 2: {'Ж': 15, 'М': 9}}
Через функции агрегации результат практически аналогичный.
Источник: Stack Overflow на русском