我有一个这样的数据框:
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的某种组合来实现,但是我没有取得任何进展。
答案 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