Estoy creando un pandas DataFrame
y quiero mantener la primera fila. Sin embargo, se sigue convirtiendo en nombres de columna. Intenté los headers=False
pero esto solo lo eliminé por completo.
Tengo una cadena ( st = '\n'.join(lst)
) que convierto en un objeto similar a un archivo ( io.StringIO(st)
), luego io.StringIO(st)
el csv
partir de ese objeto de archivo.
Desea header=None
el tipo False
se promueve a int
en 0
vea el énfasis de los documentos mío:
encabezado: int o lista de entradas, número (s) de fila ‘inferir’ predeterminado para usar como nombres de columna y el inicio de los datos. El comportamiento predeterminado es como si se estableciera en 0 si no se pasan nombres, de lo contrario, Ninguno . Pase explícitamente header = 0 para poder reemplazar los nombres existentes. El encabezado puede ser una lista de enteros que especifican ubicaciones de fila para un índice múltiple en las columnas, por ejemplo, [0,1,3]. Las filas intermedias que no se especifiquen se omitirán (por ejemplo, en este ejemplo se omiten 2). Tenga en cuenta que este parámetro ignora las líneas comentadas y las líneas vacías si skip_blank_lines = True, por lo que header = 0 denota la primera línea de datos en lugar de la primera línea del archivo.
Puedes ver la diferencia de comportamiento, primero con header=0
:
In [95]: import io import pandas as pd t="""a,b,c 0,1,2 3,4,5""" pd.read_csv(io.StringIO(t), header=0) Out[95]: abc 0 0 1 2 1 3 4 5
Ahora con None
:
In [96]: pd.read_csv(io.StringIO(t), header=None) Out[96]: 0 1 2 0 abc 1 0 1 2 2 3 4 5
Tenga en cuenta que en la última versión 0.19.1
, esto ahora generará un TypeError
:
In [98]: pd.read_csv(io.StringIO(t), header=False)
TypeError: pasar un bool al encabezado no es válido. Use header = None para no header o header = int o list-like of ints para especificar la (s) fila (s) que forman los nombres de columna
Creo que necesitas el header=None
parámetro header=None
para read_csv
:
Muestra:
import pandas as pd from pandas.compat import StringIO temp=u"""a,b 2,1 1,1""" df = pd.read_csv(StringIO(temp),header=None) print (df) 0 1 0 ab 1 2 1 2 1 1