Tengo un DataFrame de pandas como:
AB '2010-01-01' 10 20 '2010-02-01' 20 30 '2010-03-01' 30 10
Necesito aplicar alguna función para cada columna y crear nuevas columnas en este DataFrame con un nombre especial.
AB A1 B1 '2010-01-01' 10 20 20 40 '2010-02-01' 20 30 40 60 '2010-03-01' 30 10 60 20
Así que necesito hacer dos columnas adicionales con los nombres A1
y B2
basadas en las columnas A
y B
(como el nombre A1 = str(A) + str(1)
) multiplicando por dos. ¿Es posible hacer esto usando DataFrame.apply()
u otra construcción?
Puedes usar join
para hacer la combinación:
>>> import pandas as pd >>> df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]}) >>> df AB 0 10 20 1 20 30 2 30 10 >>> df * 2 AB 0 20 40 1 40 60 2 60 20 >>> df.join(df*2, rsuffix='1') AB A1 B1 0 10 20 20 40 1 20 30 40 60 2 30 10 60 20
donde podría reemplazar df*2
con df.apply(your_function)
si lo desea.
Me saltearía el método de apply
y definiría las columnas directamente.
import pandas as pd df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]}) for col in df.columns: df[col+"1"] = df[col] * 2
No tan elegante como la solución de DSM. Pero por el motivo que sea, evito apply
menos que realmente lo necesite.