Question Obtenir la liste des en-têtes de colonnes de pandas DataFrame


Je veux obtenir une liste des en-têtes de colonnes d'un DataFrame pandas. Le DataFrame viendra de l'entrée de l'utilisateur, donc je ne saurai pas combien de colonnes il y aura ou comment elles seront appelées.

Par exemple, si on me donne un DataFrame comme ceci:

>>> 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

Je voudrais avoir une liste comme celle-ci:

>>> header_list
[y, gdp, cap]

543
2017-10-20 21:18


origine


Réponses:


Vous pouvez obtenir les valeurs sous forme de liste en faisant:

list(my_dataframe.columns.values)

Aussi, vous pouvez simplement utiliser:

list(my_dataframe)

957
2017-10-20 21:23



Il y a une méthode intégrée qui est la plus performante:

my_dataframe.columns.values.tolist()

.columns retourne un Index, .columns.values retourne un array et cela a une fonction d'aide pour retourner un list.

MODIFIER

Pour ceux qui détestent taper c'est probablement la méthode la plus courte:

list(df)

266
2017-10-20 22:25



Avez-quelques tests rapides, et peut-être sans surprise la version intégrée en utilisant dataframe.columns.values.tolist() est le plus rapide:

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

(J'aime toujours beaucoup le list(dataframe) cependant, merci EdChum!)


63
2017-12-01 20:31



Cela devient encore plus simple (par les pandas 0.16.0):

df.columns.tolist()

vous donnera les noms des colonnes dans une belle liste.


35
2018-04-07 14:50



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

Pour répertorier les colonnes d'une base de données en mode débogueur, utilisez une compréhension de liste:

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

En passant, vous pouvez obtenir une liste triée simplement en utilisant sorted:

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

27
2018-05-28 15:58



C'est disponible en tant que my_dataframe.columns.


18
2017-10-20 21:20



C'est intéressant mais df.columns.values.tolist() est presque 3 fois plus rapide alors df.columns.tolist() mais je pensais qu'ils sont les mêmes:

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



Dans le carnet

Pour l'exploration de données dans le cahier IPython, ma méthode préférée est la suivante:

sorted(df)

Ce qui produira une liste alphabétique facile à lire.

Dans un référentiel de code

Dans le code, je trouve plus explicite de faire

df.columns

Parce que cela indique aux autres personnes qui lisent votre code ce que vous faites.


9
2018-03-30 07:19



UNE Trame de données suit la convention de dictée d'itération sur les "clés" des objets.

my_dataframe.keys()

Créer une liste de clés / colonnes - méthode d'objet to_list() et façon pythonique

my_dataframe.keys().to_list()
list(my_dataframe.keys())

Itération de base sur un DataFrame renvoie des étiquettes de colonnes

[column for column in my_dataframe]

Ne convertissez pas un DataFrame dans une liste, juste pour obtenir les étiquettes de colonne. N'arrêtez pas de penser en cherchant des échantillons de code pratiques.

xlarge = pd.DataFrame(np.arange(100000000).reshape(10000,10000))
list(xlarge) #compute time and memory consumption depend on dataframe size - O(N)
list(xlarge.keys()) #constant time operation - O(1)

9
2018-01-23 17:23



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

2
2017-10-20 21:43



Je pense que la question mérite une explication supplémentaire.

Comme l'a noté @fixxxer, la réponse dépend de la version de pandas que vous utilisez dans votre projet. Ce que vous pouvez obtenir avec pd.__version__ commander.

Si vous êtes pour une raison quelconque comme moi (sur Debian Jessie j'utilise 0.14.1) en utilisant une ancienne version de pandas que 0.16.0, alors vous devez utiliser:

df.keys().tolist() Parce qu'il n'y a pas df.columns méthode implémentée pour le moment.

L'avantage de cette méthode est qu'elle fonctionne même dans les versions plus récentes des pandas, elle est donc plus universelle.


2
2017-12-13 14:47