膨大なデータサイズのため、私たちはパンダを使ってデータを処理しましたが、非常に奇妙な現象が発生しました。疑似コードは次のようになります。chunkksizeオプションのpandas.read_csv関数の異常なインデックス機構
reader = pd.read_csv(IN_FILE, chunksize = 1000, engine='c')
for chunk in reader:
result = []
for line in chunk.tolist():
temp = complicated_process(chunk) # this involves a very complicated processing, so here is just a simplified version
result.append(temp)
chunk['new_series'] = pd.series(result)
chunk.to_csv(OUT_TILE, index=False, mode='a')
結果の各ループが空でないことを確認できます。しかし、初めてのループでは、chunk['new_series'] = pd.series(result)
行に結果があり、残りは空です。したがって、出力の最初のチャンクだけがnew_seriesを含み、残りは空です。
ここで何か不足しましたか?前もって感謝します。
ありがとうございます。はい、あなたは提案が働いています。しかし、私はなぜresult = []が動くのか理解できません。これは私にとって非常に厄介です。少し詳しく説明できますか?どうもありがとう! – acepor
ありがとうございました。しかし、これはまさに問題を引き起こしたものではありません。各チャンクの索引付けを追跡したとき、私はそれらが個々ではないことを発見しました。各チャンクは0からインデックスを開始すると仮定しましたが、実際はそうではありません。この場合、各チャンクのインデックスはCSV全体のサブセットであるため、そのインデックスはCSVから派生しています。これが問題の原因です。上記の例では、 'pandas.to_csv'は最後のチャンクではなく、最初のチャンクの結果のみを書き込みます。しかし、私はあなたのインスピレーションに感謝します。そうでなければ、私は本当にこれを解決する方法を知らなかった。 – acepor
私の 'chunk = chunk.assign(new_series = result)'勧告を使いましたか?私はあなたがこの問題を抱えているとは思わない。 – Alexander