原始數(shù)據(jù)框df是: type month0 a 11 b 12 c 13 e 54 a 55 c 56 b 97 e 98 a 99 e 910 a 111 a 1請注意, 被month安排在連續(xù)的段中并定期重復(fù)。段的大小并不總是相同的。我想num為每個連續(xù)的月份添加一列,再次從 0 重新編號。不應(yīng)更改原始序列的順序。預(yù)期的輸出應(yīng)該是: type month num0 a 1 01 b 1 12 c 1 23 e 5 04 a 5 15 c 5 26 b 9 07 e 9 18 a 9 29 e 9 310 a 1 011 a 1 1我不能使用groupby,因為 的值month重復(fù)但分開。
1 回答

搖曳的薔薇
TA貢獻(xiàn)1793條經(jīng)驗 獲得超6個贊
首先,我們創(chuàng)建groupswith 檢查下一行是否等于上一行 withSeries.shift然后是cumsum布爾值。
然后我們對組進(jìn)行分組并使用cumcount
grps = df['month'].ne(df['month'].shift()).cumsum()
df['num'] = df.groupby(grps).cumcount()
type month num
0 a 1 0
1 b 1 1
2 c 1 2
3 e 5 0
4 a 5 1
5 c 5 2
6 b 9 0
7 e 9 1
8 a 9 2
9 e 9 3
10 a 1 0
11 a 1 1
添加回答
舉報
0/150
提交
取消