Sorprendido, no he visto esto publicado hasta ahora, así que lo dejaré aquí.
Desempaquetado Iterable Extendido (python3.5 +): [*df]y Amigos
Las generalizaciones de desempaque (PEP 448) se han introducido con Python 3.5. Entonces, las siguientes operaciones son todas posibles.
df = pd.DataFrame('x', columns=['A', 'B', 'C'], index=range(5))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
Si quieres un list...
[*df]
# ['A', 'B', 'C']
O, si quieres un set,
{*df}
# {'A', 'B', 'C'}
O, si quieres un tuple,
*df, # Please note the trailing comma
# ('A', 'B', 'C')
O, si desea almacenar el resultado en algún lugar,
*cols, = df # A wild comma appears, again
cols
# ['A', 'B', 'C']
... si eres el tipo de persona que convierte el café en sonidos de mecanografía, bueno, esto consumirá tu café de manera más eficiente;)
PD: si el rendimiento es importante, querrás deshacerte de las soluciones anteriores a favor de
df.columns.to_numpy().tolist()
# ['A', 'B', 'C']
Esto es similar a la respuesta de Ed Chum , pero actualizado para v0.24, donde .to_numpy()se prefiere el uso de .values. Vea
esta respuesta (por mí) para más información.
Verificación visual
Como he visto esto discutido en otras respuestas, puede utilizar desempaquetar iterable (sin necesidad de bucles explícitos).
print(*df)
A B C
print(*df, sep='\n')
A
B
C
Crítica de otros métodos
No use un explícito for bucle para una operación que se puede hacer en una sola línea (las comprensiones de la lista están bien).
A continuación, el uso sorted(df) no conserva el orden original de las columnas. Para eso, debes usarlist(df) en lugar.
A continuación, list(df.columns)y list(df.columns.values)son sugerencias pobres (a partir de la versión actual, v0.24). Ambas matrices Index(devueltas de df.columns) y NumPy (devueltas por df.columns.values) definen.tolist() método que es más rápido y más idiomático.
Por último, la enumeración, es decir, list(df)solo debe usarse como una alternativa concisa a los métodos antes mencionados para python <= 3.4 donde el desembalaje extendido no está disponible.
columnscomo atributo?