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!