2016-05-24 6 views
2

にエラーが発生したすべての行を取得する方法を、私はパンダ例えば

pd.read_csv('file.csv') 

は、csvファイルをロードするために使用することができます。

デフォルトでは、解析エラーが発生すると失敗します。私はerror_bad_lines=Falseを使ってエラーのある行をスキップできることを理解しています。

私の質問は:

エラーが発生するすべての行を取得するにはどうすればよいですか?この方法では、この特定のfile.csvだけでなく、バ​​ッチ内の他の関連ファイルの問題を潜在的に解決できる可能性があります。file1.csv, file2.csv, file3.csv ...

+0

error_bad_linesがFalseに設定されている場合、warn_bad_linesのデフォルト値はTrueになります。したがって、エラーが発生した入力ファイルの行番号を指定する警告が表示されます。どのような追加情報をお探しですか?出力は次のようになります。 行をスキップする4:予期した5フィールド、見た6 5行目をスキップする:5フィールド、鋸7 – ViennaMike

+0

@ViennaMike、私はこれらの情報を取得するプログラムをより期待しています。具体的には、上記の出力は、どの行にエラーがあるかを手動で確認するのに役立ちます。しかし、私はむしろ変数に行番号を格納したいと思います。また、エラーラインを別のテキストファイルに出力するので、次回エラーが発生したラインをデータベースなどにロードするだけで済みます。 –

答えて

1

簡単に1行のインデックス番号を各行に付加します。これは、データをロードする前にAwkまたはPythonで簡単に行うことができます。 StringIOやPythonの独自のカスタムファイルライクなオブジェクトを使ってメモリ内で行えば、行番号の前に「魔法のように」置くことができます。