2014-10-09 93 views
41

我有一个包含文本数据的Python Pandas DataFrame对象。我的问题是,当我使用to_html()函数时,它会截断输出中的字符串。熊猫to_html()截断字符串内容

例如:

import pandas 
df = pandas.DataFrame({'text': ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.']}) 
print (df.to_html()) 

输出处于adapis...

<table border="1" class="dataframe"> 
    <thead> 
    <tr style="text-align: right;"> 
     <th></th> 
     <th>text</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <th>0</th> 
     <td> Lorem ipsum dolor sit amet, consectetur adipis...</td> 
    </tr> 
    </tbody> 
</table> 

截断上有SO一个相关的问题,但它使用占位符和搜索/替换功能,以进行后处理的HTML,这我想避免:

有没有更简单的解决方案来解决这个问题?我找不到与documentation有关的任何内容。

+0

你是如何看的内容,是通过IPython的?试试这个'pd.set_option('display.max_colwidth',-1)'然后打印html,你会发现它显示全文,这与截断实际数据无关,只是显示设置 – EdChum 2014-10-09 11:57:46

+0

@ EdChum是的,的确,我正在查看HTML槽IPython,但在普通python终端中也得到了相同的结果。但是,是的,set_option修复了这个问题!在终端和IPython中。之前不知道这种可能性。 – Timo 2014-10-09 12:01:59

+0

熊猫试图保护你免受可能杀死较小python环境的输出大量输出,除了我从来没有听说过它截断数据的晦涩的错误 – EdChum 2014-10-09 12:18:31

回答

58

你看到的只是大熊猫截断输出仅用于显示目的。

默认max_colwidth值是50,这是你所看到的。

您可以将该值设置为任何你想要的,或者你可以将它设置为-1,可以有效地这一关:

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

虽然我反对这项建议,倒不如将其设置为东西可以在控制台或ipython中轻松显示。

的选项列表可以在这里找到:http://pandas.pydata.org/pandas-docs/stable/options.html

+4

df.to_html()中的“...”评估为“真”。它看起来像'pandas'截断输出值,而不仅仅是显示。 – 2016-07-22 03:36:53

+0

Downvoter谨慎解释? – EdChum 2017-11-01 09:14:27

8

似乎pd.set_option('display.max_colwidth', -1)确实是唯一的选择。为了防止如何dataframes在控制台呈现不可逆转的全球变化,你可以保存先前设置的变量和使用后立即恢复,如下所示:

old_width = pd.get_option('display.max_colwidth') 
    pd.set_option('display.max_colwidth', -1) 
    open('some_file.html', 'w').write(some_data.to_html()) 
    pd.set_option('display.max_colwidth', old_width) 
+15

如何设置临时选项有一个简单得多的解决方案:'with pd.option_context('display.max_colwidth',-1):output_html = df.to_html()' – hynekcer 2017-06-21 21:10:57