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:
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:
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:['aaa-1', 'aaa-2', 'aaa-5', 'aaa-8', 'aaa-10', 'aaa-11']
ou est l'erreur?Code:a=natsorted(df["Name"])