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 :

pandas tri en fonction d'une autre colonne [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut pandas tri en fonction d'une autre colonne
    Bonsoir, j'ai un souci de tri.
    Par exemple, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import pandas as pd
     
    df1 = pd.DataFrame(['jane','dave','john'])
    df2 = pd.DataFrame(['fgt','hyt','ert'])
    df3 = df1 + " " + df2
    print(df3)
    print(df3.iloc[:, 0].values.tolist())
    order = {k:v for v,k in enumerate(df3.iloc[:, 0].values.tolist())}
    student_tuples = pd.DataFrame([['john ert', 'A', 15],['jane fgt', 'B', 12],['dave hyt', 'B', 10] ])
    print(sorted(student_tuples.values.tolist(), key=lambda x:order[x[0]]))
    J'obtiens ce que je veux, c'est à dire la deuxièmedataframe classée en fonction des noms de la première.
    J'effectue la même chose (en fait sans doute pas j'imagine) sur 2 dataframes de 180 termes et j'ai l'erreur suivante que je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        order = {k:v for v,k in enumerate(pd_nom_prenom.iloc[:, 0].values.tolist())}
     
      File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexing.py", line 925, in __getitem__
        return self._getitem_tuple(key)
     
      File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexing.py", line 1506, in _getitem_tuple
        self._has_valid_tuple(tup)
     
      File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexing.py", line 751, in _has_valid_tuple
        self._validate_key_length(key)
     
      File "/usr/local/lib/python3.9/dist-packages/pandas/core/indexing.py", line 792, in _validate_key_length
        raise IndexingError("Too many indexers")
     
    IndexingError: Too many indexers
    Si quelqu'un a une idée parce que là, je sèche.
    Peut-être dans la construction de mes dataframes ?

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Résolu, il me manquait un pd.Dataframe...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2015, 16h26
  2. Réponses: 1
    Dernier message: 13/02/2014, 10h01
  3. Réponses: 1
    Dernier message: 12/11/2012, 19h11
  4. Trier une colonne en fonction d'une autre colonne
    Par Joelatack dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/06/2012, 14h27
  5. [XL-2003] Compter valeurs d'une colonne en fonction d'une autre colonne
    Par greggy dans le forum Excel
    Réponses: 2
    Dernier message: 03/11/2009, 12h51

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