如何基于DataFrame中BX与BY的重复组合创建ID列?
给DataFrame添加基于多列唯一组合的ID列
原始DataFrame
| BX | BY |
|---|---|
| 1 | 12 |
| 1 | 12 |
| 1 | 12 |
| 2 | 14 |
| 2 | 14 |
| 3 | 5 |
实现方法
你可以用以下两种简洁方式为BX和BY的唯一组合生成连续ID:
方法一:使用factorize
将BX和BY合并为元组后,用factorize生成编码,最后加1让ID从1开始:
import pandas as pd df = pd.DataFrame({ 'BX': [1,1,1,2,2,3], 'BY': [12,12,12,14,14,5] }) # 生成ID列 df['ID'] = pd.factorize(df[['BX', 'BY']].apply(tuple, axis=1))[0] + 1
方法二:使用groupby + ngroup
按BX和BY分组后,用ngroup为每个组分配编号,同样加1调整起始值:
df['ID'] = df.groupby(['BX', 'BY']).ngroup() + 1
最终结果
执行上述任意一种方法后,DataFrame会变成:
| BX | BY | ID |
|---|---|---|
| 1 | 12 | 1 |
| 1 | 12 | 1 |
| 1 | 12 | 1 |
| 2 | 14 | 2 |
| 2 | 14 | 2 |
| 3 | 5 | 3 |
内容的提问来源于stack exchange,提问作者starski
相关产品推荐
相关产品推荐

