2014-10-09 104 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