2012-12-30 71 views
1

這是一個非常奇怪的錯誤:IPython的筆記本不打印型()

以下代碼:

a = 'string1' 
b = 'string2' 

test_dict = {'col1':{a:type(a), b:type(b)},'col2':{a:type(a), b:type(b)}} 
pd.DataFrame(test_dict) 

在正常IPython的控制檯產生如預期以下:

   col1   col2 
string1 <type 'str'> <type 'str'> 
string2 <type 'str'> <type 'str'> 

但是在ipython筆記本中,應該顯示類型的單元格爲空:

enter image description here

回答

4

我懷疑如果你在瀏覽器中做了查看 - >源代碼,你會看到預期的<類型...>。發生了什麼事是瀏覽器認爲這是一個HTML標籤,並沒有認出它,只是簡單地把它扔掉了。

注意:如果我在這個答案中沒有輸入&amp;lt;type ...>,我的答案也會發生同樣的情況。

+0

啊,這很有道理。任何解決方法的想法? – ChrisArmstrong

+0

我能夠通過轉換爲字符串和註冊表來解決所有問題,但實際的數據類型出來...不漂亮,但它的工作原理和它更緊湊,然後打印整個廢話 – ChrisArmstrong

+0

這不是IPython中的錯誤,這是熊貓的一個錯誤 - 大熊貓告訴IPython它已經有一個HTML repr,IPython信任它已經正確轉義,但事實並非如此。作爲熊貓開放[問題2617](https://github.com/pydata/pandas/issues/2617)。 – minrk

3

一種解決方法是將打印數據幀,這使得它與IPython中的筆記本更好的發揮:

In [144]: print pd.DataFrame(test_dict) 

       col1   col2 
string1 <type 'str'> <type 'str'> 
string2 <type 'str'> <type 'str'> 

我發現在HTML表格撐開線,所以這個解決辦法是我的默認。