2015-10-29 12 views
5

以外のすべてのusecols、それは必要なすべての列をリストせずread_csvを利用する場合、最後の1以外のすべての列を取るusecols持つことが可能です。私は13列ファイルを持っている場合パンダ私はcsvファイルを持って最後

例えば、私はusecols=[0,1,...,10,11]を行うことができます。 usecols=[:-1]を実行すると構文エラーが発生しますか?

別の方法がありますか?私はあなただけの最初の読み取りから列の配列をスライスして、最後のCOLをスキップ完全なCSV形式に再読み込み、その後のcolsを取得するためにnrows=1を使用して単一の行を読むことができpandas 0.17

+0

なぜ単一行で読み込むのではなく、列のリストを取得して最後のエントリを削除するのはなぜですか? – EdChum

答えて

4

を使用しています:

cols = pd.read_csv(file, nrows=1).columns 
df = pd.read_csv(file, usecols=cols[:-1]) 
バージョン 0.20からパンダで usecolsメソッドを起動する
+0

それは唯一の選択肢ですか?私は各ファイルの行を追加する必要があるようです。大部分はさまざまなカラムを持つので、同じ 'cols'変数を使用することはできません。 – Leb

+0

はない私は考えることができることを、あなたは常に最初にCSVファイルを解析する必要があり、それはあなたが動的に使用するcolsのかを決定することができます解析から、これは – EdChum

+0

おかげで、1つの最後の質問に内蔵されているものではありません。 'usecols = [: - 1]'を実行すると、なぜ構文エラーになるのですか?それはpythonやpandasから来ていますか? – Leb

1

lambda表現、つまり、呼び出し可能なフィルタを受け入れます。あなたは次のようにあなたが行うことができますスキップする列の名前を知っていればそれゆえ:

columns_to_skip = ['foo','bar'] 
df = pd.read_csv(file, usecols=lambda x: x not in columns_to_skip) 

をここドキュメントreferenceです。

関連する問題