Saltar al contenido

python: escribir un DataFrame de pandas en un archivo CSV

octubre 20, 2021
apple touch icon@2

Puede probar otra cosa si tiene problemas para codificar en ‘utf-8’ y desea ir celda por celda, puede intentar lo siguiente.

Python 2

(Donde «df» es su objeto DataFrame).

for column in df.columns:
    for idx in df[column].index:
        x = df.get_value(idx,column)
        try:
            x = unicode(x.encode('utf-8','ignore'),errors="ignore") if type(x) == unicode else unicode(str(x),errors="ignore")
            df.set_value(idx,column,x)
        except Exception:
            print 'encoding error: {0} {1}'.format(idx,column)
            df.set_value(idx,column,'')
            continue

Entonces intenta:

df.to_csv(file_name)

Puede comprobar la codificación de las columnas mediante:

for column in df.columns:
    print '{0} {1}'.format(str(type(df[column][0])),str(column))

Advertencia: errors = «ignore» simplemente omitirá el carácter, p. Ej.

IN: unicode('Regenexxxae',errors="ignore")
OUT: u'Regenexx'

Python 3

for column in df.columns:
    for idx in df[column].index:
        x = df.get_value(idx,column)
        try:
            x = x if type(x) == str else str(x).encode('utf-8','ignore').decode('utf-8','ignore')
            df.set_value(idx,column,x)
        except Exception:
            print('encoding error: {0} {1}'.format(idx,column))
            df.set_value(idx,column,'')
            continue
close