J'ai un ensemble de données avec des colonnes multi-index dans un pandas df que j'aimerais trier par valeurs dans une colonne spécifique. J'ai essayé d'utiliser sortindex et sortlevel mais je n'ai pas réussi à obtenir le résultats que je recherche. Mon jeu de données se présente comme suit:
Group1 Group2
A B C A B C
1 1 0 3 2 5 7
2 5 6 9 1 0 0
3 7 0 2 0 3 5
Je souhaite trier toutes les données et l'index par la colonne C du groupe 1 par ordre décroissant pour donner les résultats suivants:
Group1 Group2
A B C A B C
2 5 6 9 1 0 0
1 1 0 3 2 5 7
3 7 0 2 0 3 5
Est-il possible de faire ce tri avec la structure dans laquelle mes données se trouvent ou devrais-je permuter Groupe1 du côté index?
Lors du tri par MultiIndex, vous devez contenir le tuple décrivant la colonne dans une liste *:
In [11]: df.sort_values([('Group1', 'C')], ascending=False)
Out[11]:
Group1 Group2
A B C A B C
2 5 6 9 1 0 0
1 1 0 3 2 5 7
3 7 0 2 0 3 5
* afin de ne pas confondre pandas en pensant que vous voulez trier d'abord par groupe1 puis par c.
Remarque: initialement utilisé .sort
depuis obsolète puis supprimé à 0,20, en faveur de .sort_values
.