ホームページ >バックエンド開発 >Python チュートリアル >Pandasで最小値の選択を使用してGroupby中に列を保持する方法は?
最小値選択による 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 サイトの他の関連記事を参照してください。