Creación de nuevas columnas en pandas.DataFrame usando la función apply ()

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.