2013-08-01 85 views
1

我有一個輸入文件,我想讀入一個熊貓數據框。 該文件是空格分隔的,包括第一個值之前的空格。 我已經嘗試使用「\ W +」正則表達式作爲分隔符的read_csv和read_table。 W +分隔符意外的read_csv結果

data = pd.io.parsers.read_csv('file.txt',names=header,sep="\W+")

他們在正確的列數讀,但值本身是完全僞造的。是否有其他人遇到過這種情況,或者我使用不正確

我也嘗試逐行讀取文件,從row.split()創建一系列並將該系列附加到數據幀,但它似乎因內存而崩潰。

是否有任何其他選項用於從文件創建數據框?

我使用熊貓v0.11.0,Python 2.7版

回答

2

正則表達式'\W'的意思是「不是一個單詞字符」(一個「單詞字符」是字母,數字和下劃線),看到re docs,因此怪結果。我想你的意思是使用空格'\s+'

注意:read_csv提供了一個delim_whitespace參數(您可以設置爲True),但是我個人更喜歡使用'\s+'

+0

我的錯誤與\ W。 \ s +和delim_whitespace都可以工作。文檔似乎表明delim_whitespace提供更好的性能。 再次感謝:) – taylormade201

1

我不知道你的數據是什麼樣的,所以我不能重現你的錯誤。我創建了一些示例數據,它運行良好,但有時在read_csv中使用正則表達式可能會很麻煩。如果要指定分隔符,請改爲使用「」作爲分隔符。但我建議先嚐試安迪海登的建議。這是「delim_whitespace = True」。它運作良好。

你可以在這裏看到它的文檔:http://pandas.pydata.org/pandas-docs/dev/io.html