Bonjour,
j'essaie de faire un "trie naturel" relatif à une colonne d'un dataframe mais il y a un truc qui ne marche pas.
quand j'applique le "natsorted" sur la colonne en question le trie s'effectue correctement.
mais quand je l'applique sur la dataframe entière ça marche plus (ça plante pas mais le trie n'est plus bon).
ci dessous un exemple:
(avec:
from natsort import natsorted)
import pandas as pd)
j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 df = pd.DataFrame(columns = ['Name',"aaaa","bbbb"]) df["Name"]=["aaa-1","aaa-2","aaa-11","aaa-10","aaa-8","aaa-5"] df["aaaa"] = [9,8,7,6,5,4] df["bbbb"] = [3,4,5,6,7,8] df = df.sort_values(by=["Name"], key=lambda x: natsorted(df["Name"])) df = df.reset_index(drop=True)
Alors que la colonne "Name" devrait ressembler à:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Name aaaa bbbb 0 aaa-1 9 3 1 aaa-8 5 7 2 aaa-5 4 8 3 aaa-2 8 4 4 aaa-11 7 5 5 aaa-10 6 6
enfin c'est ce que me sort spontanément le trie suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ['aaa-1', 'aaa-2', 'aaa-5', 'aaa-8', 'aaa-10', 'aaa-11']
ou est l'erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part a=natsorted(df["Name"])
Partager