从pandas数据框转换为html时,如何在html中显示完整(非截断)的数据框信息?


212

我使用该DataFrame.to_html函数将pandas数据框转换为html输出。当我将其保存到单独的html文件中时,该文件显示截断的输出。

例如,在我的“文字”列中,

df.head(1) 将会呈现

这部电影是很棒的努力。

代替

这部电影是在解构这一时期盛行的复杂社会情绪方面做出的出色努力。

在大屏幕熊猫数据框的屏幕友好格式的情况下,这种表示形式很好,但是我需要一个HTML文件,该文件将显示数据框中包含的完整表格数据,即,将显示后一个文本元素而不是前一段文字。

如何在html版本的信息的TEXT列中显示每个元素的完整,不截断的文本数据?我可以想象html表必须显示长单元格才能显示完整的数据,但是据我所知,只能将列宽参数传递给该DataFrame.to_html函数。

Answers:


421

display.max_colwidth选项设置为-1

pd.set_option('display.max_colwidth', -1)

set_option docs

例如,在iPython中,我们看到信息被截断为50个字符。多余的部分省略:

在此处输入图片说明

如果设置该display.max_colwidth选项,则信息将完整显示:

在此处输入图片说明


9
根据文档,您应该将其设置None为无限制。
凯南2015年

21
答案是正确的,即不应将其设置为None。否则会得到ValueError: Value must have type '<class 'int'>'错误提示。
xpt

我正是这个意思!
伊凡(Ivan)

2
max_columns为我工作的回答,它使用None作为第二个参数set_option
千焦耳

8
如果您希望这些显示选项仅应用一次,而不是永久应用,也可以这样使用上下文管理器:with pd.option_context('display.max_colwidth', -1): display(df)
SA SA

114
pd.set_option('display.max_columns', None)  

id (第二个参数)可以完全显示列。


撇开一点点,我的表的中间被省略号和省略号(...)所代表的列数被截断了。谢谢!
4:43

4
这对我有用,而不是其他答案。我正在使用Python 3.6
Durga Swaroop,

1
这对我来说在Python 2.7上不起作用,但是@ behzad.nouri的第一个答案可以。
r3robertson '18年

这应该是公认的答案。当前的带有选项的接受答案max_colwidth可以解决由于字段值太长而导致的截断问题。但是,我认为对于大多数人来说,截断问题实际上是太多了。因此,这max_columns应该被接受。
克里斯托弗

@ Christopher,OP询问了一栏的宽度,很多都是因为这两者而来的,因此Karl的回答与它们更相关。
阿列克谢·马蒂安诺夫

87

虽然pd.set_option('display.max_columns', None)套所示的最大列数,选项pd.set_option('display.max_colwidth', -1)设置每个单个场的最大宽度。

出于我的目的,我编写了一个小的辅助函数,以在不影响其余代码的情况下完全打印大型数据帧,还重新格式化了浮点数并设置了虚拟显示宽度。您可以在用例中采用它。

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    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')

将print(x)上方的行中的-1更改为“ None”以避免过时警告
Mark Zhukovsky

1

对于那些希望这样做的人。我在dask中找不到类似的选项,但是如果我只是在同一本笔记本中为熊猫做这件事,那么它也适用于dask。

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)

0

以下代码导致以下错误:

pd.set_option('display.max_colwidth', -1)

FutureWarning:在1.0版中不建议使用传递负整数,在将来的版本中将不支持。而是使用“无”不限制列宽。

而是使用:

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

这样就完成了任务并符合1.0 版之后的熊猫版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.