87 votes

Redéfinir l'index dans un objet Pandas DataFrame

J'essaie de réindexer un fichier pandas DataFrame comme suit,

From:
            a   b   c
        0   1   2   3
        1  10  11  12
        2  20  21  22

To :
           b   c
       1   2   3
      10  11  12
      20  21  22

Je procède comme indiqué ci-dessous et j'obtiens une mauvaise réponse. Des indices sur la façon de procéder ?

>>> col = ['a','b','c']
>>> data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)
>>> data
    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22
>>> idx2 = data.a.values
>>> idx2
array([ 1, 10, 20], dtype=int64)
>>> data2 = DataFrame(data,index=idx2,columns=col[1:])
>>> data2
     b   c
1   11  12
10 NaN NaN
20 NaN NaN

Une idée de la raison de ce phénomène ?

192voto

Avaris Points 11815

Pourquoi ne pas utiliser simplement set_index méthode ?

In : col = ['a','b','c']

In : data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)

In : data
Out:
    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22

In : data2 = data.set_index('a')

In : data2
Out:
     b   c
a
1    2   3
10  11  12
20  21  22

5voto

Aakash Saxena Points 128

Si vous ne voulez pas de "a" dans l'index

Dans :

col = ['a','b','c']

data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col)

data

Sortie :

    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22

Dans :

data2 = data.set_index('a')

Sortie :

     b   c
a
1    2   3
10  11  12
20  21  22

Dans :

data2.index.name = None

Sortie :

     b   c
 1   2   3
10  11  12
20  21  22

0voto

John Galt Points 1144

Pour éviter un nom d'index avec une seule ligne, vous pouvez utiliser set_index('a') avec rename_axis(None)

In [8]: data.set_index('a').rename_axis(None)
Out[8]: 
     b   c
1    2   3
10  11  12
20  21  22

Détails

In [9]: data
Out[9]: 
    a   b   c
0   1   2   3
1  10  11  12
2  20  21  22

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X