首页 > 解决方案 > 双重分组后reset_index不重置索引

问题描述

当我使用 pandas groupby 按组对值求和并使用另一个 groupby 中的结果来计算每个子组中组总数的百分比时,我无法重置索引以通过切片访问列。如何访问列或重置索引?

test = pd.DataFrame({'Animal' : ['Falcon', 'Falcon','Parrot', 'Parrot','Mouse','Mouse'],'Type':['Bird', 'Bird', 'Bird', 'Bird', 'Rodent','Rodent'],'Count' : [380., 370., 24., 26., 1.9, 2.8]})

# second groupby gives a proportion of total animal counts within each type
gb = test.groupby(['Type','Animal']).sum().groupby(level=0).apply(lambda x: x / float(x.sum()))

当我取消堆叠时,我无法重置索引以便提取列

gb = gb.unstack().reset_index()
gb.loc['Animal']

导致错误,指示没有名为“动物”的列。

取消堆叠后如何重置以便我可以对列进行子集化(或重命名它们,现在可以替代)?

标签: pythonpandas

解决方案


当我取消堆叠时,我无法重置索引以便提取列

gb.unstack()
gb.loc['Animal']

您可以通过以下方式获取“动物”列: gb.loc[:,'Animal'] 或者 gb['Animal']


推荐阅读