创建一个新列,为 Pandas DataFrame 中的重复值分配相同的索引

jim*_*mmy 6 python indexing pandas

如何生成列出重复值的新列?例如,我的数据框是:

id    color

123   white
123   white
123   white
345   blue
345   blue
678   red
Run Code Online (Sandbox Code Playgroud)

这是所需的输出:

#    id   color

1   123   white
1   123   white
1   123   white 
2   345   blue
2   345   blue
3   678   red
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 9

检查factorize

df['#']=df.id.factorize()[0]+1
df
    id  color  #
0  123  white  1
1  123  white  1
2  123  white  1
3  345   blue  2
4  345   blue  2
5  678    red  3
Run Code Online (Sandbox Code Playgroud)

另一种方法

df.groupby('id').ngroup()+1
0    1
1    1
2    1
3    2
4    2
5    3
dtype: int64
Run Code Online (Sandbox Code Playgroud)

要将其添加到第一个位置:

df.insert(loc=0, column='#', value=df.id.factorize()[0]+1)
df
   #   id  color 
0  1  123  white  
1  1  123  white  
2  1  123  white  
3  2  345   blue  
4  2  345   blue  
5  3  678    red  
Run Code Online (Sandbox Code Playgroud)