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

Susan Sarandon
リリース: 2024-10-25 08:18:02
オリジナル
184 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!