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

时间:2019-03-18 17:27:21

标签: 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": ["a0", "a0", "a0", "b0", "b0", "a1", "a1", "c0"]})

1 个答案:

答案 0 :(得分:0)

使用shiftcumsum创建密钥,然后我们使用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