Maison > développement back-end > Tutoriel Python > Comment puis-je trier de manière personnalisée une colonne Pandas DataFrame en fonction d'un dictionnaire ?

Comment puis-je trier de manière personnalisée une colonne Pandas DataFrame en fonction d'un dictionnaire ?

Linda Hamilton
Libérer: 2024-11-27 19:30:14
original
334 Les gens l'ont consulté

How Can I Custom Sort a Pandas DataFrame Column Based on a Dictionary?

Tri personnalisé dans les dataframes Pandas

Dans Pandas, vous devrez parfois trier une dataframe en fonction d'un ordre personnalisé. Ceci peut être réalisé à l'aide d'un dictionnaire pour définir l'ordre de tri souhaité.

Problème :
Vous disposez d'un dataframe Pandas avec une colonne contenant les noms de mois. Vous souhaitez trier cette colonne à l'aide d'un dictionnaire personnalisé, tel que :

custom_dict = {'March':0, 'April':1, 'Dec':3}
Copier après la connexion

Solution :

Utilisation de séries catégorielles :
Pandas 0.15 a introduit la série catégorique, qui offre une manière élégante de gérer ce problème. scénario :

  1. Convertissez la colonne du mois en une série catégorielle, en spécifiant l'ordre personnalisé :

    df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
    Copier après la connexion
  2. Triez la trame de données en fonction de la catégorie colonne :

    df.sort_values("m")
    Copier après la connexion

Utilisation d'un Série intermédiaire :
Avant Pandas 0.15, vous pouviez utiliser une série intermédiaire pour réaliser un tri personnalisé :

  1. Appliquer le dictionnaire personnalisé à la colonne du mois :

    s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
    Copier après la connexion
  2. Trier les intermédiaires series :

    s.sort_values()
    Copier après la connexion
  3. Définissez l'index du dataframe sur la série intermédiaire triée et triez :

    df.set_index(s.index).sort()
    Copier après la connexion

En utilisant la méthode de remplacement :
Dans les versions plus récentes de Pandas, Series propose une méthode de remplacement qui permet un aperçu plus concis solution :

df['m'].replace({'March':0, 'April':1, 'Dec':3})
Copier après la connexion

Cette méthode remplace les valeurs du mois par les valeurs de tri correspondantes spécifiées dans le dictionnaire. Le tri de la trame de données en fonction de la colonne du mois modifiée permettra d'obtenir l'ordre personnalisé souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal