Pandas df.apply no modifica DataFrame

Resuelto Raheel asked hace 7 años • 2 respuestas

Recién estoy comenzando con pandas, así que perdonen si esto es algo estúpido.

Estoy intentando aplicar una función a una columna pero no funciona y tampoco veo ningún error.

 capitalizer = lambda x: x.upper()
    for df in pd.read_csv(downloaded_file, chunksize=2, compression='gzip', low_memory=False):
        df['level1'].apply(capitalizer)
        print df
        exit(1)

Esta impresión muestra los level1valores de la columna igual que el csv original que no funciona upper. Me estoy perdiendo de algo ?

Gracias

Raheel avatar Nov 01 '17 19:11 Raheel
Aceptado

applyno es una función in situ ; no modifica los valores en el objeto original, por lo que debes asignarlo nuevamente:

df['level1'] = df['level1'].apply(capitalizer)

Alternativamente, puedes usar str.upper, debería ser mucho más rápido.

df['level1'] = df['level1'].str.upper()
cs95 avatar Nov 01 '2017 13:11 cs95
df['level1'] = map(lambda x: x.upper(), df['level1'])

puedes usar el código anterior para poner tu columna en mayúsculas

gB08 avatar Nov 01 '2017 13:11 gB08