我有一个看起来像下面的数据框:
enter image description here
数据框根据其状态对问题进行计数:
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等创建单独的列,并在行中提供问题计数,其看起来必须如下所示:
enter image description here
使用question_count_data数据框执行此操作的最佳方法是什么?我不想更改已经实施的groupby方法,因为那是为我提供问题计数的原因。
我不认为拥有另一种groupby方法是可行的解决方案,因为我最终想要做的是获取State列的行值,并将它们分隔为Draft,Review,Published等列,然后提供每个日期的计数。
详细的解释将对您有所帮助。
最佳答案
您真的很亲密,需要使用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))
关于python - Pandas DataFrame分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52325109/