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

如何将pandas.DataFrame转为指定宽度、中间列用省略号截断的字符串

实现方案

pandas本身内置了对应格式化能力,不需要自己额外实现截断逻辑,可通过以下两种方式获取和终端打印效果完全一致的字符串:

方案1:临时调整显示配置(最简便)

pandas默认的str(df)输出就是终端打印的效果,你只需要用上下文管理器临时调整显示宽度适配你的终端即可,不会修改全局配置:

import pandas as pd

def dataframe_to_terminal_str(df, terminal_width=80):
    with pd.option_context(
        "display.width", terminal_width,  # 填写你的终端实际宽度
        "display.max_columns", None,  # 允许pandas自动判断需要截断的列数
        "display.max_colwidth", 20,  # 可选:单个单元格最大宽度,超出自动加省略号
        "display.show_dimensions", False  # 可选:是否在末尾输出行列统计信息
    ):
        return str(df)

方案2:直接调用底层格式化类(更灵活)

如果需要完全脱离全局配置自定义格式化规则,可直接调用pandas底层的DataFrameFormatter类:

from pandas.io.formats.format import DataFrameFormatter

def dataframe_to_terminal_str(df, terminal_width=80):
    formatter = DataFrameFormatter(
        df,
        width=terminal_width,
        max_columns=None,
        max_colwidth=20,
        show_dimensions=False
    )
    return "\n".join(formatter.format())

效果说明

两种方案输出的字符串都和终端直接打印DataFrame的效果完全一致:

  • 总宽度不会超过设定的终端宽度
  • 超出宽度的中间列会自动用...截断
  • 不会自动换行拆分单行内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:09:04