Filtre las filas de CSV antes de cargarlas al dataframe de pandas

Tengo un archivo csv grande, que no puedo cargar en un DataFrame usando read_csv () debido a problemas de memoria. Sin embargo, en la primera columna de csv hay un indicador {0,1}, y solo necesito cargar las filas con un ‘1’, que será lo suficientemente pequeño como para caber en un DataFrame. ¿Hay alguna forma de cargar los datos con una condición, o de manipular el csv antes de cargarlo (similar a grep)?

Puede usar pd.read_csv s el parámetro de comment y establecerlo en '0'

 import pandas as pd from io import StringIO txt = """col1,col2 1,a 0,b 1,c 0,d""" pd.read_csv(StringIO(txt), comment='0') col1 col2 0 1 a 1 1 c 

También puede usar chunksize para convertir pd.read_csv en un iterador y procesarlo con query y pd.concat
NOTA: Como señaló el OP, el tamaño de trozo de 1 no es realista. Lo usé sólo para fines de demostración. Por favor boostlo para satisfacer las necesidades individuales.

 pd.concat([df.query('col1 == 1') for df in pd.read_csv(StringIO(txt), chunksize=1)]) # Equivalent to and slower than... use the commented line for better performance # pd.concat([df[df.col1 == 1] for df in pd.read_csv(StringIO(txt), chunksize=1)]) col1 col2 0 1 a 2 1 c