将重复索引添加到熊猫数据框

时间:2019-09-03 20:22:56

标签: python pandas

我有一个这样的数据框:

name      food
mike     pizza  
mike    cookie  
mike    banana  
mary     apple  
mary      pear  
jane  broccoli

我想添加一个对 name 唯一的连续整数列,如下所示:

id  name      food
 1  mike     pizza  
 1  mike    cookie  
 1  mike    banana  
 2  mary     apple  
 2  mary      pear  
 3  jane  broccoli

是否有一只优雅的大熊猫一(或两)大班轮来做到这一点?我是熊猫的新手,并且怀疑有一种方法可以使用groupby和lambda的某种组合来实现,但是我没有取得任何进展。

3 个答案:

答案 0 :(得分:1)

你可以让

df['id'] = (df.name != df.name.shift(1)).cumsum()

答案 1 :(得分:1)

您可以使用pd.factorize

df['Id'] = pd.factorize(df['name'])[0] + 1

输出:

   name      food  Id
0  mike     pizza   1
1  mike    cookie   1
2  mike    banana   1
3  mary     apple   2
4  mary      pear   2
5  jane  broccoli   3

然后设置索引ID:

df.set_index('Id')

输出:

    name      food
Id                
1   mike     pizza
1   mike    cookie
1   mike    banana
2   mary     apple
2   mary      pear
3   jane  broccoli

答案 2 :(得分:0)

尝试一下:

df.set_index((~df.name.duplicated()).cumsum())
      name      food
name                
1     mike   pizza  
1     mike  cookie  
1     mike  banana  
2     mary   apple  
2     mary    pear  
3     jane  broccoli