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 ?
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}
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 :
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"])
Triez la trame de données en fonction de la catégorie colonne :
df.sort_values("m")
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é :
Appliquer le dictionnaire personnalisé à la colonne du mois :
s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
Trier les intermédiaires series :
s.sort_values()
Définissez l'index du dataframe sur la série intermédiaire triée et triez :
df.set_index(s.index).sort()
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})
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!