我有一个类似这样的框架:
| 名称|ID|
| --|--|
| 一| 1 |
| B| 2 |
| 一| 1 |
| C| 3 |
| B| 3 |
| D| 3 |
| E| 1 |
| F| 2 |
正如你所看到的,有些ID有多个名字,我想改变ID,这样每个名字的新示例都有一个唯一的ID,理想情况下,生成的ID列看起来像这样:
不幸的是,我不能使用ngroup(),因为有超过35,000个ID。
| 名称|ID| ID_new|
| --|--|--|
| 一| 1 |1_1|
| B| 2 |2_1|
| 一| 1 |1_1|
| C| 3 |3_1|
| B| 2 |2_1|
| D| 3 |3_2|
| E| 1 |1_2|
| F| 2 |2_2|
所有的帮助是赞赏!
我使用了.ngroup()+ 1,但正如我所说的,ID太多了,我也使用了cumcount()+ 1,但这使得'_'后面的数字每次增加一个,导致非唯一的ID。
1条答案
按热度按时间pod7payv1#
在
GroupBy.transform
中的lambda函数中对每个组使用factorize
,并通过Series.str.cat
与ID
连接:字符串