Pandas сгруппировать по три столбца и разделить столбец - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь сгруппировать по трем столбцам и объединить их так, чтобы столбцы (не строки) были разделены на третью группу.

Я использую метод groupby, чтобы получить фрейм данных, который разделить на вопрос, школу и пол:

df.groupby([question, 'SCHOOL', 'GENDER']).size().unstack()

Таблица, которую я получаю

Однако вместо разделения строки на SCHOOL я пытаясь получить SCHOOL в качестве моего столбца и разделить это с помощью GENDER. Так что я хочу иметь 'Q3.1 в качестве моего индекса и SCHOOL в качестве моего столбца, но столбец SCHOOL также будет разделен на GENDER.

По существу столбцы будут иметь следующий вид:

(('Middle School', 'Female'),
 ('Middle School', 'Male'),
 ('High School', 'Female'),
 ('High School', 'Male'))

1 Ответ

0 голосов
/ 10 апреля 2020

Это то, что вы хотите df.pivot_table(index=['q3'], columns=['school', 'gender'], values=['value'])

Это вывод, который я получил

value
school  highschool  middleschool
gender  female  male    female  male
q3              
breakoff    15  1   16  2
excellent   17  3   18  4
fair    19  5   20  6
good    21  7   22  8
missing 23  9   24  10
poor    25  11  26  12
verygood    27  13  28  14

Вот кадр данных, который я использовал:

df=pd.DataFrame({'gender': ['male']*14+['female']*14, 'school':['highschool','middleschool']*14,'q3': ['breakoff','breakoff'
,'excellent','excellent','fair','fair','good','good','missing','missing','poor','poor','verygood',
'verygood','breakoff','breakoff','excellent','excellent','fair','fair','good','good','missing','missing','poor','poor',
'verygood','verygood'], 'value': np.arange(1,29)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...