1. ホーム
  2. python

[解決済み] Pandasのread_csv関数で、読み込み時に行をフィルタリングするには?

2022-08-25 07:54:52

質問

pandasを使用して、メモリにロードするCSVの行をフィルタリングするにはどうすればよいですか? このオプションは read_csv . 私は何かを見逃していますか?

例:タイムスタンプ列を持つCSVがあり、タイムスタンプがある定数より大きい行だけを読み込みたいのですが、どうすればいいですか?

どのように解決するのですか?

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 を利用可能なメモリに合わせて変更することができます。参照 を参照してください。 をご覧ください。