2012-12-05 8 views
6

私は本の例を次の通りですPython for Data Analysis。具体的には、2012年選挙データベースの第9章を参照してください。データはカンマ区切りの大きなcsvファイルにあります。しかし、ファイルのすべての行に余分な末尾の区切り文字があり、これは混乱するようです。pandas.read_csvpython pandas - 末尾の区切り文字は混乱しますread_csv

余分な区切り文字を余分な列があるかのように扱います。したがって、ヘッダーに必要なものよりも1つ多くの列があります。次にpandas.read_csvは、最初の列を行ラベルとして取ります。全体の効果は、列とヘッダーがもう整列していないことです。最初の列は行ラベルになり、2列目は最初のヘッダーなどによって名前が付けられます。

かなり迷惑です。どのようにpandas.read_csv正しいことを行うにはどのようなアイデアを教えて?私は1つを見つけることができませんでした。

素晴らしい本、BTW。

答えて

2

私は、自動的にこの問題を扱う見ているためにGitHubの問題を作成しました:

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

私はあなたがここにhttp://github.com/pydata/pydata-book掲示1を使用する場合は、FECファイル形式は少し、この迷惑なissue--を引き起こし変更だと思いますうまくいけば、その問題はありません。

+0

この本のギブスレポがあります。ありがとう、ウェス。 – edwardw

+0

私はこの問題が他の場所で発生するのはちょっとだけです。 NOAA Climateサイトから気象データをダウンロードしました。各CSVファイルの末尾に余分なカンマがあります。私は上記の同じ回避策を思いつきました。それは迷惑で、read_csv()がうまくいかない理由を理解するためにしばらく時間がかかりました。 – user2072880

3

さて、非常に簡単な回避策があります。

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

次に、列とヘッダーが再び整列するように、ヘッダーにダミー列を追加します。

6

これを見つけているすべての人に。ウェスはこれについてblogpostと書いています。問題は、行に1つの値が多すぎると行名として扱われることです。

この動作は、index_col=Falseをオプションとしてread_csvに設定することで変更できます。

関連する問題