You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重定向至stdout时Pandas DataFrame列被隐藏,如何完整输出整表?

解决Pandas宽表重定向输出时换行/列省略的问题

问题根源是Pandas会自动检测输出流是否为交互式终端(tty):

  • 输出到终端时,它会读取终端实际宽度渲染表格;
  • 输出被重定向或通过管道传递时,Pandas默认用80字符固定宽度,导致列被省略或强制换行。

可以通过以下几种方式解决:

方法1:全局设置终端宽度(推荐)

通过shutil获取当前终端的实际宽度,强制Pandas用该宽度渲染表格,不受输出流类型影响:

import pandas as pd
import shutil

# 获取终端宽度
term_width = shutil.get_terminal_size().columns
# 关闭列数限制,设置显示宽度为终端宽度
pd.set_option('display.max_columns', None)
pd.set_option('display.width', term_width)

# 打印表格
print(your_dataframe)

方法2:手动固定显示宽度

如果终端宽度不稳定,或需要输出到文件时用固定宽度,直接指定一个足够大的数值:

import pandas as pd

pd.set_option('display.max_columns', None)
pd.set_option('display.width', 300)  # 根据表格实际宽度调整数值

print(your_dataframe)

方法3:显式调用to_string()定制输出

无需全局修改Pandas选项,仅在打印时指定参数:

import pandas as pd
import shutil

term_width = shutil.get_terminal_size().columns
# 用to_string指定列数和行宽
print(your_dataframe.to_string(max_cols=None, line_width=term_width))

额外说明

  • 输出到文件时,可将line_width设为一个足够大的值(比如1000),让表格在文件中以单行完整显示;
  • 使用tee管道时,终端宽度依然生效,上述方法能保证表格格式与直接在终端打印一致。

内容的提问来源于stack exchange,提问作者Rich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:27:09