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)最省事。

回到顶部