给出以下数据框:
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"]})
答案 0 :(得分:0)
使用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