Comment trier le DataFrame de Pandas par les valeurs d'une colonne
Nous allons introduire la méthode pandas.DataFrame.sort_values
pour trier les valeurs de DataFrame
, et ses options comme ascending
pour spécifier l’ordre de tri et na_position
qui détermine la position de NaN
dans le résultat trié.
Considérons la DataFrame
suivante,
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df)
Si vous exécutez ce code, vous obtiendrez la sortie suivante qui n’est pas encore triée.
col1 col2 col3
0 g 5 0
1 t 2 7
2 n 5 2
3 w 1 8
4 n 3 1
5 g 6 2
Nous pourrions maintenant trier la DataFrame
avec les codes ci-dessous.
import pandas as pd
df = pd.DataFrame(
{
"col1": ["g", "t", "n", "w", "n", "g"],
"col2": [5, 2, 5, 1, 3, 6],
"col3": [0, 7, 2, 8, 1, 2],
}
)
print(df.sort_values(by=["col1"]))
Nous trions la DataFrame
par col1
. Après avoir exécuté le code ci-dessus, vous obtiendrez le résultat suivant.
col1 col2 col3
0 g 5 0
5 g 6 2
2 n 5 2
4 n 3 1
1 t 2 7
3 w 1 8
Nous pouvons également utiliser plus d’une colonne pour le tri. Changeons la dernière ligne des codes ci-dessus comme suit,
print(df.sort_values(by=["col1", "col2"]))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
col1 col2 col3
0 g 5 0
5 g 6 2
4 n 3 1
2 n 5 2
1 t 2 7
3 w 1 8
Maintenant, DataFrame
est également trié par col2
.
Ordre de tri des dataframes
- Argument ascending
Par défaut, le tri est en ordre croissant, pour trier les DataFrame
en ordre décroissant, nous devons mettre le drapeau ascending=False
.
print(df.sort_values(by=["col1", "col2"], ascending=False))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
col1 col2 col3
3 w 1 8
1 t 2 7
2 n 5 2
4 n 3 1
5 g 6 2
0 g 5 0
Ordre de tri des données - Argument na_position
na_position
spécifie la position de NaN
après le tri, c’est-à-dire que last
met NaN
à la fin. Sa valeur par défaut est first
qui met NaN
au début du résultat trié.
Considérons la DataFrame
suivante,
import numpy as np
import pandas as pd
s = pd.Series([np.nan, 2, 4, 10, 7])
print(s.sort_values(na_position="last"))
Après avoir exécuté le code, nous obtiendrons la sortie suivante.
1 2.0
2 4.0
4 7.0
3 10.0
0 NaN
Article connexe - Pandas DataFrame
- Comment obtenir les en-têtes de colonne de Pandas DataFrame sous forme de liste
- Comment supprimer une colonne de Pandas DataFrame
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment convertir un float en un entier dans Pandas DataFrame
- Comment obtenir l'agrégat des Pandas par groupe et par somme