IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

natural sort dataframe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut natural sort dataframe
    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)

    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)
    j'obtiens:
    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
    Alors que la colonne "Name" devrait ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ['aaa-1', 'aaa-2', 'aaa-5', 'aaa-8', 'aaa-10', 'aaa-11']
    enfin c'est ce que me sort spontanément le trie suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a=natsorted(df["Name"])
    ou est l'erreur?

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    La page officielle de documentation de pandas sort_values() donne déjà un exemple. C'est fait comme ça.
    Code python3 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import pandas as pd
    import numpy as np
    from natsort import index_natsorted
    #...etc
    df = df.sort_values(by=["Name"], key=lambda x: np.argsort(index_natsorted(df["Name"])))
    #etc...
    En fait, on peut faire épargner np.argsort() si on veut - c'est plus simple.
    Code python3 : Sélectionner tout - Visualiser dans une fenêtre à part
    df = df.sort_values(by=["Name"], key=lambda x: index_natsorted(df["Name"]))

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Décembre 2019
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Décembre 2019
    Messages : 113
    Par défaut
    Bonjour,
    merci! ça marche en effet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. StringGrid sort
    Par clovis dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/10/2004, 21h46
  2. erreur me sort
    Par wperle dans le forum XQUERY/SGBD
    Réponses: 10
    Dernier message: 23/02/2004, 13h19
  3. sorte de valeur par defaut
    Par sampq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2003, 11h59
  4. xsl:sort
    Par Pierre63 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 03/07/2003, 12h37
  5. JBuilder 7 personnal sort à chaque save
    Par Hannouz dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/12/2002, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo