我有一个带有df1
列和datetime
列的panda 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
答案 0 :(得分:0)
y = df.T.unstack()
然后弥补pandas中缺少连续的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
这将产生连续值的数量