私は「Python for Data Analysis」の本を読んでいて、「例:2012年の連邦選挙委員会データベース」セクションでデータをDataFrameに読み取るのに問題があります。問題は、index_col引数がNoneに設定されている場合でも、データの列の1つが常にインデックス列として設定されていることです。
:ここでは、データへのリンクですhttp://www.fec.gov/disclosurep/PDownload.doが。
これはロードコードです(チェックの時間を節約するために、nrows = 10を設定します)。
import pandas as pd
fec = pd.read_csv('P00000001-ALL.csv',nrows=10,index_col=None)
短くするために、データ列の出力を除外していますが、これが私の出力です(インデックス値は使用しないでください)。
In [20]: fec
Out[20]:
<class 'pandas.core.frame.DataFrame'>
Index: 10 entries, C00410118 to C00410118
Data columns:
...
dtypes: float64(4), int64(3), object(11)
そして、これが本の出力です(ここでもデータ列は除外されています)。
In [13]: fec = read_csv('P00000001-ALL.csv')
In [14]: fec
Out[14]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1001731 entries, 0 to 1001730
...
dtypes: float64(1), int64(1), object(14)
出力のインデックス値は、実際にはファイル内のデータの最初の列であり、残りのデータはすべて1つ左に移動しています。このデータ列がインデックスとしてリストされるのを防ぐ方法を知っている人はいますか?インデックスを+1する整数だけ増やしたいと思います。
私はpythonとpandasにかなり慣れていないので、ご不便をおかけして申し訳ありません。ありがとう。
各行の終わりに区切り文字がある場合は、index_col = Noneではなくindex_col = Falseを使用して、インデックス列の推論をオフにし、最後の列を破棄します。
データを見た後、各行の終わりにコンマがあります。そして、この引用(この記事が作成されたときからドキュメントは編集されています):
index_col:結果のDataFrameのインデックス(行ラベル)として使用する列番号、列名、または列番号/名前のリスト。デフォルトでは、ヘッダーよりもデータ列が1つ多い場合を除いて、列を使用せずに行に番号が付けられます。この場合、最初の列がインデックスとして使用されます。
ドキュメントから、パンダはあなたがn個のヘッダーとn + 1個のデータ列を持っていると信じており、最初の列をインデックスとして扱っていることを示しています。
EDIT 10/20/2014-詳細情報
後続のリミッターと、それらを単に無視する方法についての別の貴重なエントリを見つけました。
ファイルに列名の数よりも1列多いデータがある場合、最初の列がDataFrameの行名として使用されます。...
通常、この動作はindex_colオプションを使用して実現できます。
各データ行の終わりに区切り文字を含むファイルが準備されていると、パーサーを混乱させるいくつかの例外的なケースがあります。インデックス列の推論を明示的に無効にし、最後の列を破棄するには、index_col = False:...を渡します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加