Python 如何为给定列中的每个不同值生成增量列索引

Python 如何为给定列中的每个不同值生成增量列索引,python,pandas,Python,Pandas,给定以下数据帧: df = pd.DataFrame({"values": ["a", "a", "a", "b", "b", "a", "a", "c"]}) 如何生成给定的输出: values out 0 a 0 1 a 1 2 a 2 3 b 0 4 b 1 5 a 0 6 a 1 7 c 0 我可以(如果允许更简单的选项)确保组的唯一性,因此具有如下输

给定以下数据帧:

df = pd.DataFrame({"values": ["a", "a", "a", "b", "b", "a", "a", "c"]})
如何生成给定的输出:

  values  out
0      a    0
1      a    1
2      a    2
3      b    0
4      b    1
5      a    0
6      a    1
7      c    0
我可以(如果允许更简单的选项)确保组的唯一性,因此具有如下输入值:

df = pd.DataFrame({"values": ["a0", "a0", "a0", "b0", "b0", "a1", "a1", "c0"]})

使用
shift
cumsum
创建键,然后使用
category

df['strkey']=(df['values']!=df['values'].shift()).ne(0).cumsum()

df['values']+=df.groupby('values')['strkey'].apply(lambda x : x.astype('category').cat.codes.astype(str))
df
Out[568]: 
  values  strkey
0     a0       1
1     a0       1
2     a0       1
3     b0       2
4     b0       2
5     a1       3
6     a1       3
7     c0       4
可能重复的