5

CSV ファイルのセグメントを pandas DataFrame に読み込もうとしていますが、nrows を特定のポイント以上に設定すると問題が発生します。私の CSV ファイルは、さまざまなヘッダー/データの種類を持つさまざまなセグメントに分割されているため、ファイルを調べて、さまざまなセグメントの行番号を見つけて、行番号を保存しました。私がやろうとすると:

pd.io.parsers.read_csv('filename',skiprows=40, nrows=12646)

それは正常に動作します。それ以上の行があると、エラーがスローされます。

CParserError: Error tokenizing data. C error: Expected 56 fields in line 13897, saw 71

行 13897 には多くの行があるのは事実です。そのため、nrows と skiprows を使用しようとしています。パンダが読み取る最後の行を見つけることができ、残りの行と何ら変わりはありません。ファイルを 16 進エディタで見ても、違いはわかりません。

別の CSV ファイルでも試してみましたが、同様の結果が得られました。

pd.io.parsers.read_csv('file2',skiprows=112, nrows=18524)

<class 'pandas.core.frame.DataFrame'>
Int64Index: 18188 entries, 0 to 18187

しかし:

pd.io.parsers.read_csv('file2',skiprows=112, nrows=18525)

与えます:

CParserError: Error tokenizing data. C error: Expected 56 fields in line 19190, saw 71

足りないものはありますか?これを行う別の方法はありますか?

私が使用しているのはpandas-0.10.1.win-amd64-py3.3、、、、numpy-MKL-1.7.1rc1.win-amd64-py3.3およびpython-3.3.0.amd64Windows の場合です。で同じ問題が発生しnumpy-unoptimized-1.7.1rc1.win-amd64-py3.3ます。

4

1 に答える 1

3

とを使用warn_bad_lineserror_bad_linesて、不良回線エラーと警告をオフにすることができます。

import pandas as pd
from StringIO import StringIO
data = StringIO("""a,b,c
1,2,3
4,5,6
6,7,8,9
1,2,5
3,4,5""")
pd.read_csv(data, warn_bad_lines=False, error_bad_lines=False)
于 2013-04-05T21:22:45.780 に答える