[英]Pandas - Create groups with unique values in it
我想問是否可以將 pandas DataFrame 分成組,其中兩列的值在組內是唯一的? 名稱列是主鍵。
輸入:
| name | num_1 | num_2 |
|--------|-------|--------|
| name_1 | 5 | 12 |
| name_2 | 5 | 12 |
| name_3 | 5 | 12 |
| name_4 | 7 | 14 |
| name_5 | 7 | 14 |
| name_6 | 8 | 14 |
| name_7 | 8 | 14 |
| name_8 | 9 | 13 |
| name_9 | 9 | 13 |
| name_10| 9 | 13 |
output:
| name | num_1 | num_2 | group_id |
|--------|-------|--------|----------|
| name_1 | 5 | 12 | 1 |
| name_2 | 5 | 12 | 2 |
| name_3 | 5 | 12 | 3 |
| name_4 | 7 | 14 | 1 |
| name_5 | 7 | 14 | 2 |
| name_6 | 8 | 14 | 3 |
| name_7 | 8 | 14 | 4 |
| name_8 | 9 | 13 | 1 |
| name_9 | 9 | 13 | 2 |
| name_10| 9 | 13 | 3 |
基本上 num_1 和 num_2 不能在組中重復。 有什么辦法可以用 pandas 做到這一點?
將groupby
與Groupby.cumcount
一起使用:
In [1446]: df['group_id'] = df.groupby(['num_1', 'num_2']).cumcount() + 1
In [1447]: df
Out[1447]:
name num_1 num_2 group_id
0 name_1 5 12 1
1 name_2 5 12 2
2 name_3 5 12 3
3 name_4 7 14 1
4 name_5 7 14 2
5 name_6 8 14 1
6 name_7 8 14 2
7 name_8 9 13 1
8 name_9 9 13 2
9 name_10 9 13 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.