Creando columnas dinámicamente. Asignándoles un vector de fila constante

Digamos que tengo un df dataframe. Me gustaría agregarle cuatro columnas ['A', 'B', 'C, 'D'] que aún no existen y que contendrán un vector de fila constante [1, 2, 3, 4] .

Cuando trato de hacer:

 df[new_columns] = [1,2,3,4] 

falla (diciendo ['A', 'B', 'C, 'D'] no está en el índice).

¿Cómo puedo crear múltiples columnas dinámicamente en Pandas? ¿Siempre tengo que usar el apéndice para algo como esto? Recuerdo haber leído (p. Ej., En el comentario de @Jeff a esta pregunta ) que en las versiones más recientes se admitía la creación dinámica de columnas. ¿Me equivoco?

Creo que este es el camino a seguir. Lógica bastante clara aquí.

 In [19]: pd.concat([df,DataFrame([[1,2,3,4]],columns=list('ABCD'),index=df.index)],axis=1) Out[19]: label somedata ABCD 0 b 1.462108 1 2 3 4 1 c -2.060141 1 2 3 4 2 e -0.322417 1 2 3 4 3 f -0.384054 1 2 3 4 4 c 1.133769 1 2 3 4 5 e -1.099891 1 2 3 4 6 d -0.172428 1 2 3 4 7 e -0.877858 1 2 3 4 8 c 0.042214 1 2 3 4 9 e 0.582815 1 2 3 4 

La asignación múltiple podría funcionar, pero no creo que sea una gran solución porque es muy propensa a errores (por ejemplo, digamos que algunas de sus columnas ya existen, ¿qué debería hacer?). Y el rhs es muy problemático, ya que normalmente desea alinearse, por lo que no es obvio que necesite transmitir.

Puedes hacerlo columna por columna:

 import pandas as pd df = pd.DataFrame(index=range(5)) cols = ['A', 'B', 'C', 'D', 'E'] vals = [1, 2, 3, 4, 5] for c, v in zip(cols, vals): df[c] = v print df 

Tenga en cuenta que el último método mencionado en la otra pregunta a la que hizo referencia funciona de manera similar al crear cada columna de antemano:

 for a in attrlist: df[a] = 0