¿Cómo puedo leer en un archivo .csv (sin encabezados) y cuando solo quiero un subconjunto de las columnas (digamos 4 y 7 de un total de 20 columnas), usando pandas? Parece que no puedo hacerusecols
¿Cómo puedo leer en un archivo .csv (sin encabezados) y cuando solo quiero un subconjunto de las columnas (digamos 4 y 7 de un total de 20 columnas), usando pandas? Parece que no puedo hacerusecols
Respuestas:
Para leer un csv que no tiene un encabezado y solo para ciertas columnas necesita pasar parámetros header=None
y usecols=[3,6]
para las columnas 4 y 7:
df = pd.read_csv(file_path, header=None, usecols=[3,6])
Ver los documentos
Las respuestas anteriores fueron buenas y correctas, pero en mi opinión, un names
parámetro adicional lo hará perfecto, y debería ser la forma recomendada, especialmente cuando el csv no tiene headers
.
usecols
y names
parámetrosdf = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])
o use header=None
para decir explícitamente a las personas que csv
no tiene encabezados (de todos modos, ambas líneas son idénticas )
df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'], header=None)
Para que pueda recuperar sus datos
# with `names` parameter
df['colA']
df['colB']
en vez de
# without `names` parameter
df[0]
df[1]
Basado en read_csv , cuando names
se pasan explícitamente, entonces header
se comportará como en None
lugar de 0
, por lo que se puede omitir header=None
cuando names
exista.