Pandas : Comment trier les lignes par valeur absolue



Vous pouvez utiliser les méthodes suivantes pour trier les lignes d’un DataFrame pandas en fonction de la valeur absolue d’une colonne :

Méthode 1 : Trier par valeur absolue (la plus petite valeur absolue affichée en premier)

df.reindex(df['my_column'].abs().sort_values().index)

Méthode 2 : Trier par valeur absolue (la plus grande valeur absolue affichée en premier)

df.reindex(df['my_column'].abs().sort_values(ascending=False).index)

Les exemples suivants montrent comment utiliser chaque méthode dans la pratique avec le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   'over_under': [4, -9, 2, 0, 1, 12, -4, -5]})
                   
#view DataFrame
print(df)

  player  over_under
0      A           4
1      B          -9
2      C           2
3      D           0
4      E           1
5      F          12
6      G          -4
7      H          -5

Exemple 1 : Trier par valeur absolue (la plus petite valeur absolue affichée en premier)

Nous pouvons utiliser la syntaxe suivante pour trier les lignes du DataFrame en fonction de la valeur absolue de la colonne over_under :

#sort DataFrame based on absolute value of over_under column
df_sorted = df.reindex(df['over_under'].abs().sort_values().index)

#view sorted DataFrame
print(df_sorted)

  player  over_under
3      D           0
4      E           1
2      C           2
0      A           4
6      G          -4
7      H          -5
1      B          -9
5      F          12

Notez que les lignes sont triées de la plus petite valeur absolue dans la colonne over_under à la plus grande valeur absolue.

Exemple 2 : Trier par valeur absolue (la plus grande valeur absolue affichée en premier)

Nous pouvons utiliser la syntaxe suivante pour trier les lignes du DataFrame en fonction de la valeur absolue de la colonne over_under :

#sort DataFrame based on absolute value of over_under column
df_sorted = df.reindex(df['over_under'].abs().sort_values(ascending=False).index)

#view sorted DataFrame
print(df_sorted)

  player  over_under
5      F          12
1      B          -9
7      H          -5
0      A           4
6      G          -4
2      C           2
4      E           1
3      D           0

Notez que les lignes sont triées de la plus grande valeur absolue dans la colonne over_under à la plus petite valeur absolue.

Remarque : Vous pouvez trouver la documentation complète de la fonction pandas sort_values() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Pandas : comment trier par date
Pandas : comment trier les colonnes par nom
Pandas : comment trier à la fois par index et par colonne

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *