2014-01-16 39 views
3

我使用IPython與允許DataFrame對象的pandas模塊一起工作。當我運行一些代碼時,我得到一個輸出,其中DataFrame輸出在我的終端寬度之前纏繞,儘管終端寬度應該能夠容納這個長度。這個問題似乎只是孤立的熊貓系列和DataFrame對象,並沒有說,一個長長的清單。IPython和OS X終端輸出是在列限制之前換行

運行pip uninstall readline,然後通過easy_install重新安裝readline並重新啓動IPython並未解決問題。

看到我的數據沒有像這樣崩潰會很有幫助,但我真的不知道從哪裏開始解決這個問題。任何見解?

offending output

+0

如果調整終端*會發生什麼開始* IPython的過嗎?如果問題僅出現在「DataFrame」上,則意味着它是DataFrame的格式化程序錯誤。可能出於某些原因,ipython無法接收寬度更改或格式化程序無法正確處理不同的大小。 – Bakuriu

+0

如果問題是終端大小從Terminal.app通過多個圖層更改爲您的代碼,您可以更進一步,只需創建一個新的終端配置文件,其開始大小爲256或其他值,而不是80(在首選項|設置|窗口)。 – abarnert

+0

@Bakuriu聽起來很正確。無論終端寬度如何,即使有多個圖層(例如,長列表輸出爲全寬度),似乎都可以正確訪問終端寬度,但DataFrame上有一些格式化包裝線。我實際上找到了解決方法,所以我會回答這個問題。 – Chrispy

回答

5

我發現一種解決方法,其允許控制檯輸出更具有可讀性。在DataFrame對象上調用to_string()返回對象的字符串表示形式,圍繞DataFrame包含的任何固有格式,尤其是因爲目標是可讀性。

data = DataFrame(some_long_list) 
print data.to_string() # outputs to console's full-width 

編輯: 從大熊貓文檔:「新的自0.10.0,寬DataFrames現在可以跨多個行默認打印」。我看到,這有助於作爲默認設置,以便將行分列到下一行,而不是按列分隔。有兩個方法來配置輸出寬度:

import pandas as pd 
pd.set_option('line_width', 40) # default is 80 

,或者完全關閉換行功能:

pd.set_option('expand_frame_repr', False) 
+0

非常感謝! – pms