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
利用可能なメモリに合わせて変更することができます。ここ詳細については。