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

我有这个 df :


name

str_a

str_a

str_a

str_b

str_b

str_c

str_c

name在我得到的列中str,我想创建另一个名为number第一行 0 的列,然后每次前一个名称与下一个名称不同时,它都会在前一个数字上添加+1。预期结果是:


name  number

str_a 0

str_a 0

str_a 0

str_b 1

str_b 1 

str_c 2 

str_c 2

有没有办法在没有循环的情况下做到这一点?


慕标琳琳
浏览 69回答 1
1回答

哈士奇WWW

让我们尝试一下shift,cumsum请注意,您可以检查df['name'].factorize()[0] ,但是,如果名称重复但不总是连续连续,factorize则不起作用df['name'].ne(df['name'].shift()).cumsum()-1Out[10]: 0    01    02    03    14    15    26    2Name: name, dtype: int32
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python