Pregunta Obtener una lista de encabezados de columna de DataFrame de pandas


Quiero obtener una lista de los encabezados de columna de un DataFrame de pandas. El DataFrame vendrá de la entrada del usuario, así que no sabré cuántas columnas habrá o cómo se llamarán.

Por ejemplo, si me dan un DataFrame como este:

>>> my_dataframe
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7
5   4    8    3
6   8    2    8
7   9    9   10
8   6    6    4
9  10   10    7

Me gustaría obtener una lista como esta:

>>> header_list
[y, gdp, cap]

543
2017-10-20 21:18


origen


Respuestas:


Puede obtener los valores como una lista haciendo:

list(my_dataframe.columns.values)

También puedes usar simplemente:

list(my_dataframe)

957
2017-10-20 21:23



Hay un método integrado que es el más eficiente:

my_dataframe.columns.values.tolist()

.columns devuelve un Index, .columns.values devuelve un array y esto tiene una función auxiliar para devolver un list.

EDITAR

Para aquellos que odian escribir este es probablemente el método más corto:

list(df)

266
2017-10-20 22:25



Hice algunas pruebas rápidas, y tal vez, como era de esperar, la versión incorporada usando dataframe.columns.values.tolist() es el más rápido:

In [1]: %timeit [column for column in df]
1000 loops, best of 3: 81.6 µs per loop

In [2]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 16.1 µs per loop

In [3]: %timeit list(df)
10000 loops, best of 3: 44.9 µs per loop

In [4]: % timeit list(df.columns.values)
10000 loops, best of 3: 38.4 µs per loop

(Todavía me gusta mucho el list(dataframe) sin embargo, ¡así que gracias EdChum!)


63
2017-12-01 20:31



Es aún más simple (por pandas 0.16.0):

df.columns.tolist()

le dará los nombres de las columnas en una lista agradable.


35
2018-04-07 14:50



>>> list(my_dataframe)
['y', 'gdp', 'cap']

Para enumerar las columnas de un marco de datos en el modo depuración, use una lista de comprensión:

>>> [c for c in my_dataframe]
['y', 'gdp', 'cap']

Por cierto, puedes obtener una lista ordenada simplemente usando sorted:

>>> sorted(my_dataframe)
['cap', 'gdp', 'y']

27
2018-05-28 15:58



Eso está disponible como my_dataframe.columns.


18
2017-10-20 21:20



Es interesante pero df.columns.values.tolist() es casi 3 veces más rápido que df.columns.tolist() pero pensé que son lo mismo:

In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop

In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop

13
2017-12-04 21:41



En el cuaderno

Para la exploración de datos en el cuaderno IPython, mi forma preferida es la siguiente:

sorted(df)

Que producirá una lista ordenada alfabéticamente fácil de leer.

En un repositorio de código

En el código, lo encuentro más explícito para hacer

df.columns

Porque le dice a otros que leen tu código lo que estás haciendo.


9
2018-03-30 07:19