计算"停留时间"&;在黄色行之间,结果为:https://i.stack.imgur.com/9G6zF.png
有没有更好的办法
如果需要对level列的每2个值进行求和,通过比较level
和Series.eq
来创建组,通过Series.cumsum
添加累积和,并用Series.mask
中的缺失值替换2
行。然后将其传递给GroupBy.transform
,最后一行只添加另一个mask
,Series.duplicated
:
df = pd.DataFrame({'level':[2,3,2,1,3,2,1,3,5,3,1,2],
'dwell time':[1,1,1,1,2,1,2,0,2,3,4,1]})
m = df['level'].eq(2)
g = m.cumsum().mask(m)
df['dwell time 1 + 3'] = (df.groupby(g)['dwell time']
.transform('sum')
.mask(g.duplicated(keep='last')))
print (df)
level dwell time dwell time 1 + 3
0 2 1 NaN
1 3 1 1.0
2 2 1 NaN
3 1 1 NaN
4 3 2 3.0
5 2 1 NaN
6 1 2 NaN
7 3 0 NaN
8 5 2 NaN
9 3 3 NaN
10 1 4 11.0
11 2 1 NaN