Create a column with unique values for every unique value in another column

Noc*_*cas 1 python dataframe pandas

I have a data frame with a column like

         Customer  
   0.      ABC     
   1.      ABC     
   2.      DEF     
   3.      GHI     
   4.      JKL     
   5.      JKL    
Run Code Online (Sandbox Code Playgroud)

I need to add another column so that I have an id per customer like this:

         Customer  Id
   0.      ABC     1
   1.      ABC     1
   2.      DEF     2
   3.      GHI     3
   4.      JKL     4
   5.      JKL     4
Run Code Online (Sandbox Code Playgroud)

How can I do this?

Qua*_*ang 8

Option 1: You can use groupby().ngroup():

df['Id'] = df.groupby('Customer').ngroup()+1
Run Code Online (Sandbox Code Playgroud)

Option 2: You can also use rank:

df['Id'] = df['Customer'].rank(method='dense')
Run Code Online (Sandbox Code Playgroud)

Output:

    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
Run Code Online (Sandbox Code Playgroud)