pandas groupby聚合后打印DataFrame如何显示完整分组列值不折叠
实现方法
pandas默认会对多层行索引(MultiIndex)做稀疏打印,自动隐藏重复的上层索引值,才会出现你看到的折叠效果。用下面两种方法都可以实现每行完整展示所有分组列值的需求:
方案1:转换多层索引为普通列(最常用,输出格式完全匹配预期)
分组聚合时增加as_index=False参数,让分组列直接作为普通数据列返回,不生成多层行索引;如果已经生成了带多层索引的聚合结果,调用reset_index()即可完成转换:# 分组时直接生成普通列结构 grouped_df = df.groupby(['A', 'B', 'C'], as_index=False).agg({'value': 'sum'}) # 对已生成的多层索引结果做转换 # grouped_df = df.groupby(['A', 'B', 'C']).agg({'value': 'sum'}).reset_index() print(grouped_df)转换后A、B、C都是普通数据列,打印时不会有任何折叠省略。
方案2:修改打印配置,保留原有多层索引结构
如果你需要保留聚合结果的多层索引结构,仅调整打印效果,直接关闭多层索引的稀疏显示配置即可:import pandas as pd # 关闭多层索引稀疏打印,强制每行展示所有层级的索引值 pd.set_option('display.multi_sparse', False) # 后续直接打印原多层索引的聚合结果即可 grouped_df = df.groupby(['A', 'B', 'C']).agg({'value': 'sum'}) print(grouped_df)该配置全局生效,需要恢复默认折叠效果时,重新执行
pd.set_option('display.multi_sparse', True)即可。
内容的提问来源于stack exchange,提问作者user1427663
相关产品推荐
相关产品推荐

