核心内容

通过 display 类选项控制 DataFrame / Series 在控制台的显示效果,包括行数、列数、宽度、对齐等。

行与列控制

import pandas as pd
import numpy as np
 
df = pd.DataFrame(
    np.random.rand(100, 30),
    columns=[f'col_{i}' for i in range(30)]
)
 
pd.set_option('display.max_rows', 50)        # 超出则头尾折叠
pd.set_option('display.max_columns', None)   # 显示所有列
pd.set_option('display.width', 100)          # 总宽度

列宽控制

# 每列内容最大宽度 30 字符,超长以 ... 截断
pd.set_option('display.max_colwidth', 30)
 
# 不限制列宽
pd.set_option('display.max_colwidth', None)

列标题对齐

pd.set_option('display.colheader_justify', 'center')  # 居中
pd.set_option('display.colheader_justify', 'left')    # 左对齐
pd.set_option('display.colheader_justify', 'right')   # 右对齐(默认)

维度显示

pd.set_option('display.show_dimensions', True)        # 始终显示 "(100 rows x 30 columns)"
pd.set_option('display.show_dimensions', False)       # 隐藏维度
pd.set_option('display.show_dimensions', 'truncate')  # 仅截断时显示(默认)

跨行展开

# 列数过多时是否换行展开全部列
pd.set_option('display.expand_frame_repr', True)   # 默认,换行展开
pd.set_option('display.expand_frame_repr', False)  # 强制单行(会截断)

其他显示设置

# Unicode 东亚字符宽度(让中文对齐更美观)
pd.set_option('display.unicode.east_asian_width', True)
 
# 输出编码
pd.set_option('display.encoding', 'utf-8')

完整示例

with pd.option_context(
    'display.max_rows', 100,
    'display.max_columns', 20,
    'display.width', 120,
    'display.max_colwidth', 40,
    'display.precision', 3,
    'display.colheader_justify', 'left',
    'display.show_dimensions', True
):
    print(df)

配合 df.info() 调试

df.info(verbose=True, show_counts=True)

相关笔记