Maison > développement back-end > Tutoriel Python > Comment conserver les colonnes pendant Groupby avec la sélection de valeur minimale dans Pandas ?

Comment conserver les colonnes pendant Groupby avec la sélection de valeur minimale dans Pandas ?

Susan Sarandon
Libérer: 2024-10-25 08:18:02
original
260 Les gens l'ont consulté

How to Preserve Columns During Groupby with Minimum Value Selection in Pandas?

Conservation des colonnes pendant le groupby avec la sélection de la valeur minimale

Problème :

Lors de l'exécution d'un groupby opération sur une trame de données pandas pour sélectionner des lignes avec la valeur minimale pour une colonne spécifique, d'autres colonnes sont souvent supprimées par inadvertance. Cela peut être problématique lorsque des informations supplémentaires sur ces colonnes sont souhaitées.

Solution 1 : Utiliser idxmin() pour la sélection d'index

Pour préserver les autres colonnes, une approche consiste utiliser idxmin() pour obtenir les indices des éléments avec la valeur minimale pour la colonne spécifiée. Ces indices peuvent ensuite être utilisés pour sélectionner les lignes correspondantes dans le dataframe d'origine :

<code class="python">df_min = df.loc[df.groupby("item")["diff"].idxmin()]</code>
Copier après la connexion

Solution 2 : Trier et sélectionner le premier élément

Une méthode alternative est pour trier le dataframe par colonne de valeur minimale, puis sélectionner le premier élément de chaque groupe :

<code class="python">df_min = df.sort_values("diff").groupby("item", as_index=False).first()</code>
Copier après la connexion

Exemple :

Ces deux solutions obtiennent le résultat souhaité de conserver les autres colonnes tout en sélectionnant les lignes avec la valeur minimale pour la colonne spécifiée :

<code class="python">df = pd.DataFrame({
    "item": [1, 1, 1, 2, 2, 2, 2, 3, 3],
    "diff": [2, 1, 3, -1, 1, 4, -6, 0, 2],
    "otherstuff": [1, 2, 7, 0, 3, 9, 2, 0, 9]
})

df_min_idx = df.loc[df.groupby("item")["diff"].idxmin()]
df_min_sort = df.sort_values("diff").groupby("item", as_index=False).first()

print(df_min_idx)
print(df_min_sort)</code>
Copier après la connexion

Sortie :

   item  diff  otherstuff
1     1     1           2
6     2    -6           2
7     3     0           0

   item  diff  otherstuff
0     1     1           2
1     2    -6           2
2     3     0           0
Copier après la connexion

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
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