为另一列中的每个唯一值创建一个具有唯一值的列

时间:2019-10-03 20:40:46

标签: python pandas dataframe

我有一个带有类似列的数据框

         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

我该怎么做?

2 个答案:

答案 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