Pandas groupby后原分组列变为索引无法调用,如何转为普通列?
解决方案
你可以通过以下三种方式实现需求:
- 方法1:分组时禁止将分组键转为索引
在groupby方法中添加as_index=False参数,分组后的model会保留为普通列:
df = df.groupby(['model'], as_index=False).mean() # 后续可以正常使用df['model']执行你的lambda操作 df['num_topics'] = df['model'].apply(lambda x: x.split('-')[1])
- 方法2:对已生成的分组结果重置索引
如果已经完成groupby操作,可以调用reset_index()方法将索引列恢复为普通数据列:
df = df.groupby(['model']).mean() # 重置索引,model会从索引转为普通列 df = df.reset_index() df['num_topics'] = df['model'].apply(lambda x: x.split('-')[1])
- 方法3:直接访问索引处理(无需修改DataFrame结构)
如果你不需要调整DataFrame的索引结构,也可以直接操作索引值完成计算,不需要额外把model转成普通列:
df = df.groupby(['model']).mean() df['num_topics'] = df.index.map(lambda x: x.split('-')[1])
内容的提问来源于stack exchange,提问作者Emil
相关产品推荐
相关产品推荐

