我有一个熊猫df1
,有一个datetime
列和一个count
列。如果连续一个小时存在0字符串,并且在该小时内小于2分钟的数据> 0("峰值容忍"),则认为无效。
datetime
以5秒为间隔,但并不总是一致的(即可以从6:00:00跳到14:00:00,跳过两者之间的所有时间),因此行之间的差异应该是5秒,以便被认为是连续的时间段。
我想添加一个新的列flag
,标记0无效,1有效。
time count flag
00:00:05 0 0
00:00:10 0 0
..... all 0 0
01:00:05 0 0
01:00:10 33 1
01:00:15 19 1
....... n>0 1
02:00:10 12 1
转置,并将其转换成一个系列:
y = df.T.unstack()
然后,为了弥补熊猫中缺乏连续的groupby:
y * (y.groupby((y != y.shift()).cumsum()).cumcount() + 1)
OUT: 0 0
1 0
2 1
3 2
4 3
5 0
6 0
7 1
8 0
9 1
10 2
这将产生连续值的数目