2012-12-05 60 views
6

我從以下書中例子Python的數據分析。特別是,從第9章開始的2012年選舉數據庫。數據位於一個大的csv文件中,用逗號分隔。但是文件的每一行都有一個額外的尾隨分隔符,這似乎混淆了pandas.read_csv蟒蛇大熊貓 - 尾隨分隔符混淆read_csv

它把多餘的分隔符,就好像有一個額外的列。所以還有一個比標題要求更多的列。然後pandas.read_csv將第一列作爲行標籤。總體效果是,列和標題不再對齊 - 第一列變爲行標籤,第二列以第一個標題命名,等等。

這很煩人。任何想法如何告訴pandas.read_csv做正確的事情?我找不到一個。

偉大的書,順便說一句。

回答

2

我創建了一個GitHub的問題看看自動處理這個問題:

https://github.com/pydata/pandas/issues/2442

我覺得FEC文件格式略加改變,導致這惱人的issue--如果你使用一個張貼在這裏http://github.com/pydata/pydata-book你希望不會有這個問題。

+0

很高興知道這本書有一個github回購。謝謝,韋斯。 – edwardw

+0

我只是想說這個問題發生在其他地方。我剛剛從NOAA氣候網站下載了一些天氣數據,每個CSV文件的末尾都有一個逗號。我想出了與上面列出的相同的解決方法。這很煩人,並花了我一段時間來找出爲什麼read_csv()不起作用。 – user2072880

3

好的,有一個非常簡單的解決方法。在讀取csv文件時,在標題中添加一個虛擬列:

cols = ... 
cols.append('') 
records = pandas.read_csv('filename.txt', skiprows=1, names=cols) 

然後再次對齊列和標題。

6

大家誰仍在尋找這一點。 Wes寫了一個關於這個的blogpost。如果行中有一個值太多,則將其視爲行名稱。

這種行爲可以通過設置index_col=False作爲一個選項read_csv改變。