Pandas read_csv 関数でロード時に行をフィルターするにはどうすればよいですか? 質問する

Pandas read_csv 関数でロード時に行をフィルターするにはどうすればよいですか? 質問する

pandas を使用して、メモリにロードする CSV の行をフィルターするにはどうすればよいでしょうか? これは、 で見つけられるオプションのようですread_csv。何か見落としているのでしょうか?

例: タイムスタンプ列を含む CSV があり、指定された定数より大きいタイムスタンプを持つ行だけをロードしたいとします。

ベストアンサー1

CSV ファイルが pandas オブジェクトにロードされる前に行をフィルタリングするオプションはありません。

ファイルをロードしてから を使用してフィルタリングするdf[df['field'] > constant]か、ファイルが非常に大きく、メモリ不足が心配な場合は、反復子を使用して、ファイルのチャンクを連結するときにフィルタを適用します。例:

import pandas as pd
iter_csv = pd.read_csv('file.csv', iterator=True, chunksize=1000)
df = pd.concat([chunk[chunk['field'] > constant] for chunk in iter_csv])

chunksize利用可能なメモリに合わせて変更することができます。ここ詳細については。

おすすめ記事