Python中pandas的groupby.mean()结果如何完整显示DataFrame的所有列?
pandas 的 groupby 结果只显示有数值的列,如何能让 groupby.mean()的结果完整的显示 dataframe 的所有列呢? 不是数值的列,内容为空即可。 换言之, groupby 的结果保留原来 dataframe 的表结构不变。谢谢啦!!
Python中pandas的groupby.mean()结果如何完整显示DataFrame的所有列?
1 回复
用groupby().mean()之后,如果列太多,pandas默认会截断显示。要完整显示所有列,有几种方法。
最直接的是在计算前设置pandas的显示选项:
import pandas as pd
import numpy as np
# 设置显示选项,让所有列都显示出来
pd.set_option('display.max_columns', None) # 显示所有列
pd.set_option('display.width', None) # 不限制显示宽度
pd.set_option('display.max_colwidth', None) # 不限制列宽
# 创建示例数据
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B', 'C', 'C'],
'col1': [1, 2, 3, 4, 5, 6],
'col2': [10, 20, 30, 40, 50, 60],
'col3': [100, 200, 300, 400, 500, 600],
'col4': [1000, 2000, 3000, 4000, 5000, 6000]
})
# 分组计算均值
result = df.groupby('group').mean()
print(result)
如果不想全局设置,可以在打印时用to_string():
result = df.groupby('group').mean()
print(result.to_string())
或者用pd.option_context临时设置:
with pd.option_context('display.max_columns', None, 'display.width', None):
print(df.groupby('group').mean())
要是数据特别大,只想看特定列,可以转置:
result = df.groupby('group').mean().T # 转置一下,行变列
print(result)
还有个办法是重置索引,这样groupby的列也会显示出来:
result = df.groupby('group').mean().reset_index()
print(result)
总结:设置pd.set_option('display.max_columns', None)最省事。

