为了账号安全,请及时绑定邮箱和手机立即绑定

每当下一行与上一行不同时就增加一个值

每当下一行与上一行不同时就增加一个值

慕标琳琳 2023-07-27 09:50:43
我有这个 df :namestr_astr_astr_astr_bstr_bstr_cstr_cname在我得到的列中str,我想创建另一个名为number第一行 0 的列,然后每次前一个名称与下一个名称不同时,它都会在前一个数字上添加+1。预期结果是:name  numberstr_a 0str_a 0str_a 0str_b 1str_b 1 str_c 2 str_c 2有没有办法在没有循环的情况下做到这一点?
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

让我们尝试一下shift,cumsum请注意,您可以检查df['name'].factorize()[0] ,但是,如果名称重复但不总是连续连续,factorize则不起作用


df['name'].ne(df['name'].shift()).cumsum()-1

Out[10]: 

0    0

1    0

2    0

3    1

4    1

5    2

6    2

Name: name, dtype: int32


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信