таким образом я получил DataFrame, выполнив:Избавьтесь от лишних наклеек на панд DataFrames
dfgrp=df.groupby(['CCS_Category_ICD9','Gender'])['f0_'].sum()
ndf=pd.DataFrame(dfgrp)
ndf
f0_
CCS_Category_ICD9 Gender
1 F 889
M 796
U 2
2 F 32637
M 33345
U 34
Где f0_ это сумма подсчетов по полу Все, что я действительно хочу, это просто один уровень dataframe похож на этот который я получил через
ndf=ndf.unstack(level=1)
ndf
f0_
Gender F M U
CCS_Category_ICD9
1 889.0 796.0 2.0
2 32637.0 33345.0 34.0
3 2546.0 1812.0 NaN
4 347284.0 213782.0 34.0
Но то, что я хочу это:
CCS_Category_ICD9 F M U
1 889.0 796.0 2.0
2 32637.0 33345.0 34.0
3 2546.0 1812.0 NaN
4 347284.0 213782.0 34.0
Я не могу понять, хо w, чтобы сгладить или избавиться от уровней, связанных с f0_ и Gender. Все, что мне нужно, это заголовки столбцов «M», «F», «U», поэтому у меня есть простой один уровень данных. Я попытался reset_index и set_index вместе с несколькими другими вариациями, не повезло ...
В конце концов, я хочу иметь простую перекрестную таблицу с строк и столбцов сумм (которые мой пример не показывает ..
хорошо я сделал (как это было предложено в одном ответе):
ndf = ndf.f0_.unstack()
ndf
Который дал мне:
Gender F M U
CCS_Category_ICD9
1 889.0 796.0 2.0
2 32637.0 33345.0 34.0
3 2546.0 1812.0 NaN
4 347284.0 213782.0 34.0
Далее следуют:
nndf=ndf.reset_index(['CCS_Category_ICD9','F','M','U'])
nndf
Gender CCS_Category_ICD9 F M U
0 1 889.0 796.0 2.0
1 2 32637.0 33345.0 34.0
2 3 2546.0 1812.0 NaN
3 4 347284.0 213782.0 34.0
4 5 3493.0 7964.0 1.0
5 6 12295.0 9998.0 4.0
Что именно это делает, но я не могу изменить имя индекса из «Пол» на что-то вроде Idx, независимо от того, что я делаю. Я получаю дополнительную строку, добавленную с помощью нового имени, т.е. строки под названием Idx, только в разделе «Пол». Также есть ли более прямое решение?
изменил вопрос, чтобы показать результаты 1 ответ, не смог получить хороший результат с твоим .. – dartdog