ホームページ >バックエンド開発 >Python チュートリアル >Pandasで最小値の選択を使用してGroupby中に列を保持する方法は?

Pandasで最小値の選択を使用してGroupby中に列を保持する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-25 08:18:02260ブラウズ

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

最小値選択による Groupby 中の列の保持

問題:

groupby の実行時pandas データフレームで特定の列の最小値を持つ行を選択する操作を行うと、他の列が誤って削除されることがよくあります。これらの列からの追加情報が必要な場合、これは問題になる可能性があります。

解決策 1: インデックス選択に idxmin() を使用する

他の列を保持するには、次の方法があります。 idxmin() を使用して、指定された列の最小値を持つ要素のインデックスを取得します。これらのインデックスを使用して、元のデータフレームから対応する行を選択できます。

<code class="python">df_min = df.loc[df.groupby("item")["diff"].idxmin()]</code>

解決策 2: 最初の要素の並べ替えと選択

別の方法は次のとおりです。データフレームを最小値の列で並べ替えて、各グループから最初の要素を選択します:

<code class="python">df_min = df.sort_values("diff").groupby("item", as_index=False).first()</code>

例:

これらのソリューションはどちらも望ましい結果を達成します。指定された列の最小値を持つ行を選択しながら他の列を保持する方法:

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

出力:

   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

以上がPandasで最小値の選択を使用してGroupby中に列を保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。