创建与两个列相对应的唯一ID

时间:2019-03-28 08:01:26

标签: python-3.x pandas

我想创建一个生成唯一ID的列,该ID与我数据框中的两个列匹配。

下面是示例数据框:

df = pd.DataFrame({'month': [1, 2, 1, 3,4,5], 'brand': [76, 76, Arco, Shell, Arco, Cheveron],'address': [aa, aa, ab, bc, cd,de]})

我想要一个既匹配品牌又匹配地址但不匹配月份的索引

df = pd.DataFrame({ 'id':[1,1,2,3,4,5] 'month': [1, 2, 1, 3,4,5], 'brand': [76, 76, Arco, Shell, Arco, Cheveron],'address': [aa, aa, ab, bc, cd,de]})

1 个答案:

答案 0 :(得分:0)

DataFrame.insertGroupBy.ngroup一起使用:

df.insert(0, 'id', df.groupby(['brand','address'], sort=False)['month'].ngroup() + 1)
print (df)
   id  month     brand address
0   1      1        76      aa
1   1      2        76      aa
2   2      1      Arco      ab
3   3      3     Shell      bc
4   4      4      Arco      cd
5   5      5  Cheveron      de

或将各列连接在一起并使用factorize

s = df['brand'].astype(str) + '-' + df['address'].astype(str)
df.insert(0, 'id', pd.factorize(s)[0] + 1)