如何在将Pandas数据框转换为HTML时显示完整(未截断)数据框信息?

486 投票
11 回答
677500 浏览
提问于 2025-04-18 17:35

我用 DataFrame.to_html 这个函数把一个 Pandas 数据框转换成了 HTML 格式。当我把这个结果保存到一个单独的 HTML 文件时,发现文件里的内容被截断了。

比如,在我的 TEXT 列中,

df.head(1) 显示的是

这部电影是一项出色的努力...

而不是

这部电影在解构这个时期普遍存在的复杂社会情感方面做得非常出色。

这种显示方式在大屏幕上查看一个庞大的 Pandas 数据框时还可以,但我需要一个 HTML 文件,能够完整显示数据框里的所有表格数据,也就是说,我希望能看到后面那个完整的文本,而不是前面这个被截断的片段。

我该如何才能在 HTML 版本中显示 TEXT 列每个元素的完整、未被截断的文本呢?我想 HTML 表格应该能显示较长的单元格,以便展示完整数据,但据我所知,DataFrame.to_html 函数只能传入列宽的参数。

11 个回答

28

你也可以试试这个:

pd.set_option("max_columns", None) # show all cols
pd.set_option('max_colwidth', None) # show full width of showing cols
pd.set_option("expand_frame_repr", False) # print cols side by side as it's supposed to be
92

Jupyter用户

每当我只需要对一个单元格做这个时,我就会使用这个:

with pd.option_context('display.max_colwidth', None):
  display(df)
178

当你使用 pd.set_option('display.max_columns', None) 这个命令时,它会设置显示的最大列数为无限,也就是说可以显示所有的列。而 pd.set_option('display.max_colwidth', -1) 则是用来设置每一列的最大宽度。

为了方便我自己,我写了一个小工具函数,可以完整地打印出很大的数据表,而不会影响到其他代码的运行。这个函数还会重新格式化浮点数,并设置虚拟显示宽度。你也可以根据自己的需要来使用它。

def print_full(x):
    pd.set_option('display.max_rows', None)
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')
201
pd.set_option('display.max_columns', None)  

id(第二个参数)可以完整显示所有的列。

794

display.max_colwidth 这个选项设置为 None(在1.0版本之前是 -1):

pd.set_option('display.max_colwidth', None)

set_option 的使用说明

举个例子,在 IPython 中,我们会发现信息被截断到50个字符。超过的部分会用省略号表示:

截断的结果

如果你设置了 display.max_colwidth 这个选项,信息就会完整显示出来:

未截断的结果

撰写回答