2016-08-20 1 views
0

非常にエレガントで効率的な方法で、pd.read_csv(path、chunkksize = N)で終わるまでcsvファイルを開きたいと思います。問題は、ポインタがファイルから外れると、次のエラーメッセージが発生することです。pandas.read_csv()でデータを読み込む際に例外を処理する

df.get_chunk() 
Traceback (most recent call last): 

File "<ipython-input-115-061ea8dbcbad>", line 1, in <module> 
df.get_chunk() 

File "C:\Users\fedel\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 784, in get_chunk 
return self.read(nrows=size) 

File "C:\Users\fedel\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 763, in read 
ret = self._engine.read(nrows) 

File "C:\Users\fedel\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 1213, in read 
data = self._reader.read(nrows) 

File "pandas\parser.pyx", line 766, in pandas.parser.TextReader.read (pandas\parser.c:7988) 

File "pandas\parser.pyx", line 813, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:8629) 

StopIteration 

このコードはもう処理できません。

私はtry/except文が私にそのメッセージを避けるので、コードは次の問題に進むと信じています。私は、私は1つのコードをそのエラーを回避してみましょう可能性があり、次のようなステートメントは、次の問題に進んでいると思い

path = r"C:\Users\fedel\Desktop" + '\\fileName.csv' 
pd.DataFrame(np.random.randn(30, 3), columns = list('abc')).to_csv(path, index = False) 
df = pd.read_csv(path, chunksize = 6) 

あなたが次のコード行を生成することができるようなPythonのデータフレームを持っていると言う

while True: 
    try: 
     df.get_chunk() 
    except TypeOfError: 
     funcyfunction() 

この最後の例外処理コードを修正できますか?

+0

試してみてください。 'DF = pd.read_csv(パス、 chunksize = 6、error_bad_lines = False) 'を使用してエラーを引き起こす行をスキップします。 –

+0

いいえ、私はできません!それでも私にエラーのメッセージを提供します –

+0

完全なトレースバックエラーを投稿できますか? –

答えて

1

あなたは試みることができる:

包みなさい
df = pd.read_csv(path, chunksize=6) 
for chunk in df: 
    print(chunk) 

をあなたが行うことができ、各チャンク内の操作を実行します:

for chunk in df: 
    chunk['d'] = chunk[['a', 'b']].mean(axis=1) # Average of columns 'a' and 'b' 
    print(chunk) 
+0

にちょうど追加しました。ちょうど "チャンク"を見ることができます。私はそれらを管理したいと思っています。 –

+0

これらのチャンクを単一の 'dataframe'オブジェクトに結合しますか? –

+0

各サイクルで、列 'a'と列 'b'のみを選択し、3番目のpandasを取得したいとします。系列の平均である系列 –

関連する問題