nombres - seleccionar varias columnas de un dataframe python




Obtener la lista de los encabezados de columna pandas DataFrame (12)

Quiero obtener una lista de los encabezados de columna de un DataFrame de pandas. El DataFrame provendrá 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 la de abajo:

>>> header_list
[y, gdp, cap]

En el cuaderno

Para la exploración de datos en la notebook IPython, mi forma preferida es esta:

sorted(df)

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

En un repositorio de código

En el código me parece más explícito hacer

df.columns

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


Como contestó Simeon Visser ... Podrías hacer

list(my_dataframe.columns.values) 

o

list(my_dataframe) # for less typing.

Pero creo que la mayoría del punto dulce es:

list(my_dataframe.columns)

Es explícito, al mismo tiempo no innecesariamente largo.


Esta solución enumera todas las columnas de su objeto my_dataframe:

print(list(my_dataframe))

Esto nos da los nombres de las columnas en una lista:

list(my_dataframe.columns)

Otra función llamada tolist () se puede usar también:

my_dataframe.columns.tolist()

Hice algunas pruebas rápidas, y tal vez no sea sorprendente que la versión dataframe.columns.values.tolist() usa dataframe.columns.values.tolist() sea ​​la más rápida:

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

(Aunque todavía me gusta mucho la list(dataframe) , ¡gracias EdChum!)


Para una revisión visual rápida y ordenada, prueba esto:

for col in df.columns:
    print col

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

df.columns.tolist()

le dará los nombres de columna en una buena lista.


Siento que la pregunta merece una explicación adicional.

Como señaló @fixxxer, la respuesta depende de la versión de pandas que estés usando en tu proyecto. Que se puede obtener con el comando pd.__version__ .

Si por alguna razón eres como yo (en Debian jessie yo uso 0.14.1) usando una versión más antigua de pandas que 0.16.0, entonces necesitas usar:

df.keys().tolist() porque todavía no hay df.columns método df.columns implementado.

La ventaja de este método de claves es que funciona incluso en una versión más nueva de pandas, por lo que es más universal.


puede usar atributos de índice

df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
                 index=['a', 'b', 'c'])

my_dataframe.columns disponible como my_dataframe.columns .


list(a_dataframe)

¡Esto debería hacerlo!


n = []
for i in my_dataframe.columns:
    n.append(i)
print n




dataframe