首页 > 解决方案 > 如何为 groupby 结果设置列名

问题描述

我有一个大的df。在两列上使用 groupby,我在第三列上有一个 value_counts。到目前为止,一切都很好:

df_group_chir = df_chir.groupby(['Spec','Year'])['type'].value_counts()

这给出了预期的结果:

                                        type
Spec          year       type
CHI          2017          D             876
                           K             639
             2018          D             893
                           K             524
             2019          D             969
                           K             567

名称:类型,dtype:int64

但是.....如您所见,它说:名称:类型。没有其他的。以下代码也显示了 1 列:

df_group_chir.columns
Index(['type'], dtype='object')

第一个结果当然是熊猫系列。使这个系列成为 DF,当然会得到相同的结果。

知道以下内容是行不通的,但还是尝试了:

df_group_chir.columns=['Spec', 'Year', 'Type', 'Total']

结果:

ValueError: Length mismatch: Expected axis has 1 elements, new values have 4 elements

我的明显问题:如何在 groupby 结果中获得(四个)列名?

提前致谢!!问候一月

标签: pythonpandasgroup-bypandas-groupby

解决方案


让我们尝试一下reset_index选项name

df_group_chir = df_chir.groupby(['Spec','Year'])['type'].value_counts()
df_group_chir = df_group_chir.reset_index(name='Total')

推荐阅读