GroupBy 時に他の列を保持
Pandas データフレームでは、groupby を使用して特定の列に基づいて行をフィルターすると、他の列が失われる可能性があります。出力内の列。この問題は、列の最小値の検索やしきい値を下回る行の除外などのグループ操作を実行するときに発生します。
この制限を克服して groupby 中に他の列を保持するには、いくつかの方法があります。
方法 1: idxmin() を使用する
idxmin() は、指定された列の最小値を持つ行のインデックスを返します。これを使用すると、特定の行を選択し、そのすべての列を保持できます。
<code class="python">df_filtered = df.loc[df.groupby("item")["diff"].idxmin()]</code>
方法 2: 並べ替えと最初の
列ごとにデータフレームを並べ替えます。フィルタリングすると、各グループの最初の要素を取得すると、他の列も保持されます。
<code class="python">df_filtered = 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]}) # Method 1 df_filtered1 = df.loc[df.groupby("item")["diff"].idxmin()] # Method 2 df_filtered2 = df.sort_values("diff").groupby("item", as_index=False).first() print(df_filtered1) print(df_filtered2)</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
以上がパンダで GroupBy を使用するときに他の列を保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。