原始数据框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安排在连续的段中并定期重复。段的大小并不总是相同的。我想num为每个连续的月份添加一列,再次从 0 重新编号。不应更改原始序列的顺序。预期的输出应该是: 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重复但分开。
1 回答

摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
首先,我们创建groupswith 检查下一行是否等于上一行 withSeries.shift然后是cumsum布尔值。
然后我们对组进行分组并使用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
提交
取消