Saltar al contenido

¿Por qué usar pandas.assign en lugar de simplemente inicializar una nueva columna?

Solución:

La diferencia se refiere a si desea modificar un marco existente, o crear un nuevo marco manteniendo el marco original como estaba.

En particular, DataFrame.assign te devuelve un nuevo objeto que tiene una copia de los datos originales con los cambios solicitados … el marco original permanece sin cambios.

En tu caso particular:

>>> df = DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})

Ahora suponga que desea crear un nuevo marco en el que A Está en todas partes 1 sin destruir df. Entonces podrías usar .assign

>>> new_df = df.assign(A=1)

Si no desea mantener los valores originales, entonces claramente df["A"] = 1 será más apropiado. Esto también explica la diferencia de velocidad, por necesidad .assign debe copiar los datos mientras [...] no.

La premisa en assign es que vuelve:

Un nuevo DataFrame con las nuevas columnas además de todas las columnas existentes.

Y tampoco puede hacer nada en el lugar para cambiar el marco de datos original.

El invocable no debe cambiar el DataFrame de entrada (aunque los pandas no lo verifican).

Por otra parte df['ln_A'] = np.log(df['A']) hará las cosas en su lugar.


Entonces, ¿hay alguna razón por la que debería dejar de usar mi método anterior en favor de df.assign?

Creo que puedes intentar df.assign pero si lo haces cosas intensivas en memoria, mejor trabajar lo que hiciste antes u operaciones con inplace=True.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *