ホームページ  >  記事  >  バックエンド開発  >  パンダで GroupBy を使用するときに他の列を保持する方法は?

パンダで GroupBy を使用するときに他の列を保持する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 18:32:48961ブラウズ

How to Keep Other Columns When Using GroupBy in Pandas?

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

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