3 votes

Tri de DataFrame indésirable à l'aide de Pandas

Considérons un cadre de données de base (en utilisant Pandas) :

testDf = pandas.DataFrame({'c':[1,2],'b':[2,2],'a':[3,4]})

Le résultat donne :

   a  b  c
0  3  2  1
1  4  2  2

Au lieu de :

   c  b  a
0  1  2  3
1  2  2  4

Pourquoi est-il trié par ordre alphabétique ? Je veux le deuxième résultat.

3voto

jezrael Points 290608

Vous devez ajouter le paramètre columns a DataFrame car dict n'est pas ordonnée :

print (pd.DataFrame({'c':[1,2],'b':[2,2],'a':[3,4]}, columns=['c','b','a']))
   c  b  a
0  1  2  3
1  2  2  4

Dataframe :

Avec les données, vous pouvez optionnellement passer indice (étiquettes de ligne) et colonnes (étiquettes de colonne). Si vous passez un index et / ou des colonnes, vous garantissez l'index et / ou les colonnes du DataFrame résultant. Ainsi, un dict de Series plus un index spécifique rejettera toutes les données ne correspondant pas à l'index passé.

2voto

EdChum Points 10205

Vous avez passé un dict comme paramètre de données donc l'ordre n'est pas le même que l'ordre de création des clés car l'ordre n'est pas le même, vous pouvez spécifier l'ordre des colonnes en passant une liste des colonnes comme arg pour columns param :

In [307]:
testDf = pd.DataFrame({'c':[1,2],'b':[2,2],'a':[3,4]}, columns=['c','b','a'])
testDf

Out[307]:
   c  b  a
0  1  2  3
1  2  2  4

0voto

Mathias711 Points 361

Un dictionnaire n'est pas trié, vous ne pouvez donc pas vous attendre à ce que l'ordre soit le même que lors de l'initialisation.

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