我有一个带有类似列的数据框
Customer
0. ABC
1. ABC
2. DEF
3. GHI
4. JKL
5. JKL
我需要添加另一列,以便每个客户都有这样的ID:
Customer Id
0. ABC 1
1. ABC 1
2. DEF 2
3. GHI 3
4. JKL 4
5. JKL 4
我该怎么做?
答案 0 :(得分:8)
选项1:,您可以使用groupby().ngroup()
:
df['Id'] = df.groupby('Customer').ngroup()+1
选项2 :您也可以使用rank
:
df['Id'] = df['Customer'].rank(method='dense')
输出:
Customer Id
0.0 ABC 1
1.0 ABC 1
2.0 DEF 2
3.0 GHI 3
4.0 JKL 4
5.0 JKL 4
答案 1 :(得分:1)
您可以通过转换为分类并获取代码来实现此目的:
df['Id'] = df['Customer'].astype('categorical').cat.codes + 1