首頁 >後端開發 >Python教學 >在 Pandas 中使用 GroupBy 時如何保留其他欄位?

在 Pandas 中使用 GroupBy 時如何保留其他欄位?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-24 18:32:481051瀏覽

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

以上是在 Pandas 中使用 GroupBy 時如何保留其他欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn