2012-12-27 77 views
1

我正在做一個.txt文件的基本pd.read_table。第一列是cusips列表。正文"65248E10"被讀作65248E10 = 652480000000000(E10作爲科學計數法)。read_table熊貓python數值錯誤

我一直在經歷熊貓,但我無法弄清楚如何要求它保持作爲一個角色。 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_table.html#pandas.io.parsers.read_table

此外,即使我把標題= 0,它似乎是把第一行作爲標題,然後行0是第二行依此類推。如果我的文本文件沒有列名,我怎麼能得到它默認爲NULL(或1,2,3等)

感謝您的幫助。我是熊貓新手/ python

回答

2

如果我們有它看起來像

65248E10 11 
55555E55 22 

一個數據文件,那麼我們就可以用類似

>>> pd.read_table("cusip.txt", header=None, delimiter=" ", converters={0: str}) 
      0 1 
0 65248E10 11 
1 55555E55 22 

在這裏我們使用header=None告訴它沒有任何標題讀它,我們用delimiter=" "告訴它有一個空格分隔符(根據您的數據格式進行調整),並且converters={0: str}告訴它,在以字符串的形式讀取第一列後,我們希望將它變成一個字符串(即,在這種情況下什麼都不做),而不是進一步處理它。而不是converters={0: str},dtype=(str, int)也可以工作,但這樣我們仍然可以讓pandas找出其他列是什麼。

使用header=0的問題是0這裏並不意味着「沒有標題」,它意味着使用行號#0(第一行)作爲標題。

+0

一次隨訪。當頭=無,我得到我的列名默認爲X0(這很好)。但是轉換器遇到問題。如果我使用轉換器= {0:str}它說TypeError:'str'對象不可調用。如果我使用'0',它不起作用,'X0'也一樣。對此有何建議?謝謝。 – user1911092

+0

@ user1911092:您使用的是哪個版本的'pandas'? 'print pd .__ version__'。 – DSM

+0

版本0.9.1熊貓 – user1911092

1

要停止將列讀取爲數字,請使用converters參數並將str指定爲包含「cusips」列的轉換器。

對於標題,如鏈接到的頁面上所記錄的,header號碼,該行被認爲是標題;它不是一個布爾說:「我有一個頭或不將其設置爲零,則意味着使用行零(即第一行)作爲標題的文件明確指出:。

Specify None if there is no header row.

+0

感謝您的幫助。 – user1911092