2016-10-27 9 views
2

私はPandas v0.18.1でread_csvを使ってデータを読み込んでいます。私は、CSVファイルの行と列のサブセットを選択したいので、私は試してみました:usecolsとskiprowsを同時に使用する(Pandas read_csvで)エラーが発生する

df_a = pd.read_csv(filepath, index_col = False, usecols=cols_to_use, skiprows=1) 

これは私にとValueErrorを与える:Usecolsには名前が一致していません。 cols_to_use 注列名のリストですが、私はのskipRowsの一部を残している場合:

df_a = pd.read_csv(filepath, index_col = False, usecols=cols_to_use) 

私はusecolsビットを除外し、バックでのskipRowsを置けば、それは正常に動作し、同様に、それが正常に動作しますあまりにも。

これはバグかもしれません(usecolsとskiprowsを同時に使用することはできません)?私はドキュメントを見てみましたが、それについての言及は見つかりませんでした。それとも、両方を使うことができないという論理的な理由がありますか?

(あまりにも高く評価されるだろうcsvファイルから列と行のサブセットを選び出すのより良い/より多くの明白な方法があるかどうか!)事前に

ありがとう!

+3

何をしようとしているのか分かりません。しかし、 'cols_to_use'は、それらのカラム名がヘッダー行にある場合(' skiprows = 1'でスキップするかもしれません)、または整数のリストであればカラム名のリストになります。列の名前を付けようとしている可能性があります。その場合、 'names = cols_to_use'が必要です。 – piRSquared

+1

読んでいるファイルの例を教えてください。そして作業コマンドの出力を提供できますか? 私の推測では、ファイルには最初の行に列名が付いていると思います。 skiprowsを使用すると、pandasは最初の行を読み込まない可能性があり、2行目から列名を読み取る可能性があります。 –

+0

質問には、「csvから列と行のサブセットを取り出す」という質問があります。だから、 'names = cols_to_use'は行く方法ではないようです。 –

答えて

1

csvファイルの最初の行に列名が含まれている場合、skiprows=1は列名の行を無視し、エラーが発生します。

特定の行をスキップする場合は、たとえば行番号をリストとして指定することができます。 skiprows=[1]。行番号は0でインデックス付けされているため、列名は0行目に、最初のデータ行は1になります。

関連する問題