首頁 >後端開發 >Python教學 >如何有效地在 Pandas 中的分組資料中新增順序計數器列?

如何有效地在 Pandas 中的分組資料中新增順序計數器列?

Linda Hamilton
Linda Hamilton原創
2024-12-24 14:04:15891瀏覽

How to Efficiently Add a Sequential Counter Column to Grouped Data in Pandas?

將順序計數器列加入到Pandas DataFrame 中的群組

在資料整理的上下文中,有一個常見任務是新增順序計數器pandas 資料框中的列到群組。一種方法是使用回調函數,如您所示範的:

def callback(x):
    x['seq'] = range(1, x.shape[0] + 1)
    return x
雖然此方法有效,但它可能很麻煩並且需要定義一個單獨的函數。更簡潔和優雅的解決方案是利用 cumcount() 方法:

df.groupby(['c1', 'c2']).cumcount()
此方法計算每個組的累積計數,有效地為組中的每一行分配一個序號。例如,考慮以下資料框:

index c1 c2 v1
0 A X 3
1 A X 5
2 A Y 7
3 A Y 1
4 B X 3
5 B X 1
6 B X 3
7 B Y 1
8 C X 7
9 C Y 4
10 C Y 1
11 C Y 6
將cumcount() 套用於此資料框,按c1 和c2 分組,將產生:

index c1 c2 v1 seq
0 A X 3 1
1 A X 5 2
2 A Y 7 1
3 A Y 1 2
4 B X 3 1
5 B X 1 2
6 B X 3 3
7 B Y 1 1
8 C X 7 1
9 C Y 4 1
10 C Y 1 2
11 C Y 6 3
改為從1 開始排序為0,只需在cumcount() 結果上加1:

以上是如何有效地在 Pandas 中的分組資料中新增順序計數器列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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