我有這個 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
添加回答
舉報
0/150
提交
取消