Pandas DataFrame группировки - PullRequest
       10

Pandas DataFrame группировки

0 голосов
/ 14 сентября 2018

У меня есть датафрейм, который выглядит следующим образом: введите описание изображения здесь

Фрейм данных подсчитывает количество вопросов в соответствии с их состоянием:

question_count_data.columns = ['date', 'curriculum_name_en', 'concept', 'language', 
                               'concept_name_en', 'concept_name_tc', 'state', 'question_count']


question_count_data['state'] = question_count_data['state']\
    .map({10: 'DRAFT', 20: 'REVIEW', 30: 'PUBLISHED', 40: 'ERROR', 50: 'DISABLED'})

Я использовал следующий метод для создания этого кадра данных:

question_count_data = df_question.groupby(['date', 'concept__curriculum__name_en', 'concept', 
                                           'language', 'concept_name_en', 'concept_name_tc', 'state', ],
                                            as_index=False)['question_count'].sum()

Теперь я хочу создать отдельные столбцы для каждого состояния DRAFT, REVIEW, PUBLISHED и т. Д. И указать количество вопросов в строках, которое должно выглядеть следующим образом: введите описание изображения здесь

Каков наилучший способ сделать это, используя мой DataFrame question_count_data? Я не хочу менять метод groupby, который уже реализован, потому что это дает мне количество вопросов.

Я не думаю, что использование другого метода groupby было бы возможным решением, потому что в конечном итоге я хочу получить значение строки в столбце State и получить их для разделения столбцов, таких как Draft, Review, Опубликованный и т. Д., А затем предоставить счетчик на каждую дату.

Подробное объяснение будет полезно, пожалуйста.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы действительно близко, необходимо удалить as_index=False для Series с MultiIndex, а затем изменить его на Series.unstack:

cols = ['date', 'concept__curriculum__name_en', 'concept', 
        'language', 'concept_name_en', 'concept_name_tc', 'state']
question_count_data = (df_question.groupby(cols)['question_count']
                                  .sum()
                                  .unstack(fill_value=0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...