2017-12-19 16 views
1

大きなcsvファイルを読んでいますので、chunksizeパンダのイテレータを使用しています。しかし、私はParserErrorを取得するので、私はtryを使用していると思っていました。このエラーが発生した場合、次のチャンクの繰り返しに渡したいと思います。 だから私はそれをテストした:chunkksizeイテレータを除いて試してください

df = pd.read_csv("file.csv",iterator=True) 
d=True 
while d==True : 
    try: 
     df.get_chunk(500000) 
    exept ParserError : 
     pass 
    except StopIteration: 
     d=False 

をしかし、私はこのエラーを取得:

NameError : name "ParserError" is not defined

ありがとうございました!

+1

おそらく 'pd.errors.ParserError'を意味する –

+1

あなたは' except'の代わりに 'exept'を実行します。 – rocksteady

+0

あなたの質問に答えられた場合は、その隣にある灰色のチェックをクリックして緑色に切り替えることで[最も役立つ回答を受け入れてください](https://stackoverflow.com/help/someone-answers)してください。ありがとう! –

答えて

5

最近のバージョンのパンダでは、read_csvは反復処理中に渡すことができるchunksize引数を受け入れることができます。

for chunk in pd.read_csv("file.csv", 
         chunksize=500000, 
         iterator=True, 
         error_bad_lines=False, 
         engine='python'): 
    ... # do something with `chunk` 

それはforハンドルと出る消耗しているときpd.read_csvが自動的StopIterationを上げるためwhile forループ、またはエラー処理の必要は、ありません。

+0

あなたの答えをありがとう、私はあなたの方法を試してみると、私はエラーが表示されます:データをトークン化しているエラー。 Cエラー:バッファオーバーフローが検出されました - 不正な入力ファイル – day

+1

@day別の属性、 'engine = 'python''が追加されました。 –

関連する問題