Exemple de comment trier une dataframe en fonction d'une colonne donnée sous pandas en python:
Créer une dataframe
Créons par exemple la dataframe suivante
import pandas as pd
data = {'Name':['Ben','Anna','Zoe','Tom','John','Steve','Becky','Bob'],
'Age':[20,27,20,43,30,20,22,21]}
df = pd.DataFrame(data)
df
ce qui donne
Name Age
0 Ben 20
1 Anna 27
2 Zoe 20
3 Tom 43
4 John 30
5 Steve 20
6 Becky 22
7 Bob 21
Trier la dataframe en fonction de l'age
Trier la dataframe en fonction de l'age, une solution est d'utiliser la fonction sort_values, exemple:
df.sort_values(by=['Age'])
ce qui donne
Name Age
0 Ben 20
2 Zoe 20
5 Steve 20
7 Bob 21
6 Becky 22
1 Anna 27
4 John 30
3 Tom 43
Attention ici la dataframe n'a pas été modifiée, pour cela il faut utiliser l'option inplace=True:
df.sort_values(by=['Age'], inplace=True)
donne
Name Age
0 Ben 20
1 Anna 27
2 Zoe 20
3 Tom 43
4 John 30
5 Steve 20
6 Becky 22
7 Bob 21
Note: Si on veut uniquement la colonne 'Age', on peut aussi faire comme ceci:
df['Age'].sort_values()
donne
0 20
2 20
5 20
7 21
6 22
1 27
4 30
3 43
Trier la dataframe en fonction du nom
On peut aussi trier la dataframe en fonction du nom:
df.sort_values(by=['Name'])
print(df.sort_values(by=['Name']))
donne ici
Name Age
1 Anna 27
6 Becky 22
0 Ben 20
7 Bob 21
4 John 30
5 Steve 20
3 Tom 43
2 Zoe 20
Trier la dataframe en ordre décroissant
Par défaut les données sont triées par ordre croissant. Pour trier la dataframe en ordre décroissant on peut. utiliser l'option ascending=False:
df.sort_values(by=['Age'],ascending=False)
print(df.sort_values(by=['Age'],ascending=False))
donne
Name Age
3 Tom 43
4 John 30
1 Anna 27
6 Becky 22
7 Bob 21
0 Ben 20
2 Zoe 20
5 Steve 20
Trier la dataframe en fonction de deux colonnes ( l'age et le nom)
Trier la dataframe en fonction de l'age
df.sort_values(by=['Age'])
donne
Name Age
0 Ben 20
2 Zoe 20
5 Steve 20
7 Bob 21
6 Becky 22
1 Anna 27
4 John 30
3 Tom 43
Trier la dataframe en fonction de l'age et du nom:
df.sort_values(by=['Age','Name'])
print(df.sort_values(by=['Age','Name']))
donne
Name Age
0 Ben 20
5 Steve 20
2 Zoe 20
7 Bob 21
6 Becky 22
1 Anna 27
4 John 30
3 Tom 43