我有这个 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 回答
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
哈士奇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
添加回答
举报
0/150
提交
取消