如何从pandas的DataFrameGroupBy对象中获取列名列表?
获取DataFrameGroupBy对象的列名:最优方案
未聚合GroupBy对象的最优方法
直接访问GroupBy对象的obj属性,它指向原始的DataFrame,无需生成任何分组数据即可获取列名:
dfg.obj.columns
这个方案逻辑直接且性能高效——未执行聚合操作的GroupBy对象,其列名与原始DataFrame完全一致,不需要遍历分组或构建子DataFrame。
聚合后的GroupBy对象处理
如果GroupBy对象已经完成聚合操作(比如dfg = df.groupby('category').sum()),此时它本质是带分组索引的DataFrame/Series结构,直接用dfg.columns即可获取列名:
dfg.columns
对比现有方案的问题
你当前使用的dfg.get_group(next(iter(dfg.groups.keys()))).columns存在两个明显缺陷:
- 性能浪费:
get_group会完整生成第一个分组的DataFrame,分组数据量大时会占用额外内存、增加计算耗时 - 潜在报错:若分组集合为空(极端场景),
next(iter(dfg.groups.keys()))会触发StopIteration错误
内容的提问来源于stack exchange,提问作者william_grisaitis
相关产品推荐
相关产品推荐

