L'indice de pandas DataFrame par les numéros de colonne, lorsque les noms de colonne sont des entiers

J'essaie de garder seulement certaines colonnes d'un DataFrame, et il fonctionne très bien lorsque les noms de colonne sont des chaînes de caractères:

In [2]: import numpy as np

In [3]: import pandas as pd

In [4]: a = np.arange(35).reshape(5,7)

In [5]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], ['a', 'b', 'c', 'd', 'e', 'f', 'g'])

In [6]: df
Out[6]: 
    a   b   c   d   e   f   g
x   0   1   2   3   4   5   6
y   7   8   9  10  11  12  13
u  14  15  16  17  18  19  20
z  21  22  23  24  25  26  27
w  28  29  30  31  32  33  34

[5 rows x 7 columns]

In [7]: df[[1,3]] #No problem
Out[7]: 
    b   d
x   1   3
y   8  10
u  15  17
z  22  24
w  29  31

Toutefois, lorsque les noms de colonne sont des nombres entiers, j'obtiens une erreur de clé:

In [8]: df = pd.DataFrame(a, ['x', 'y', 'u', 'z', 'w'], range(10, 17))

In [9]: df
Out[9]: 
   10  11  12  13  14  15  16
x   0   1   2   3   4   5   6
y   7   8   9  10  11  12  13
u  14  15  16  17  18  19  20
z  21  22  23  24  25  26  27
w  28  29  30  31  32  33  34

[5 rows x 7 columns]

In [10]: df[[1,3]]

Résultats dans:

KeyError: '[1 3] not in index'

Je peux voir pourquoi les pandas ne permet pas que l' -> afin d'éviter toute confusion entre l'indexation par les noms de colonnes et les numéros de colonne. Cependant, il est un moyen de raconter des pandas que je veux index par numéro de colonne? Bien sûr, la seule solution est de convertir les noms de colonnes à cordes, mais je me demande si il y a une meilleure solution.

InformationsquelleAutor Akavall | 2014-11-26