簡體   English   中英

Pandas - 創建具有唯一值的組

[英]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 做到這一點?

groupbyGroupby.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM