¿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
Para leer un csv que no tiene un encabezado y solo para ciertas columnas necesita pasar parámetros header=Noney 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 namesparámetro adicional lo hará perfecto, y debería ser la forma recomendada, especialmente cuando el csv no tiene headers.
usecolsy namesparámetrosdf = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])
o use header=Nonepara decir explícitamente a las personas que csvno 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 namesse pasan explícitamente, entonces headerse comportará como en Nonelugar de 0, por lo que se puede omitir header=Nonecuando namesexista.
Asegúrese de especificar pasar header=Noney agregar usecols=[3,6]para las columnas 4 y 7.