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
Susan Sarandonoriginal
2024-10-25 08:18:02259parcourir

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>

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>

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>

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

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!

Déclaration:
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