我有以下时间序列数据帧,我想在条件b> 1000
上选择连续点(12点)Date Time a b c
2018-01-09 5:15:00 20.55 0 -3.07
2018-01-09 5:30:00 20.57 0 -3.07
2018-01-09 5:45:00 20.33 0 -3.44
2018-01-09 6:00:00 20.31 0 -2.95
2018-01-09 6:15:00 20.76 26738 -2.88
2018-01-09 6:30:00 21.4 22462 -2.77
2018-01-09 6:45:00 21.84 20033 -3
2018-01-09 7:00:00 22.17 20010 -3.28
2018-01-09 7:15:00 22.38 18133 -2.82
2018-01-09 7:30:00 22.75 18254 -3.14
2018-01-09 7:45:00 22.93 17039 -3.22
2018-01-09 8:00:00 23.13 15934 -3.27
2018-01-09 8:15:00 23.25 15438 -3.48
2018-01-09 8:30:00 23.44 16218 -3.65
2018-01-09 8:45:00 23.65 14666 -3.14
2018-01-09 9:00:00 24.01 14686 -3.1
.....
所以结果应该低于 (每天在b> 1000条件下选择12点时间序列数据)
Date Time a b c
2018-01-09 6:15:00 20.76 26738 -2.88
2018-01-09 6:30:00 21.4 22462 -2.77
2018-01-09 6:45:00 21.84 20033 -3
2018-01-09 7:00:00 22.17 20010 -3.28
2018-01-09 7:15:00 22.38 18133 -2.82
2018-01-09 7:30:00 22.75 18254 -3.14
2018-01-09 7:45:00 22.93 17039 -3.22
2018-01-09 8:00:00 23.13 15934 -3.27
2018-01-09 8:15:00 23.25 15438 -3.48
2018-01-09 8:30:00 23.44 16218 -3.65
2018-01-09 8:45:00 23.65 14666 -3.14
2018-01-09 9:00:00 24.01 14686 -3.1
2018-01-10 6:15:00 20.76 26738 -2.88
2018-01-10 6:30:00 21.4 22462 -2.77
2018-01-10 6:45:00 21.84 20033 -3
.....
我怎么能用python pandas做到这一点?
答案 0 :(得分:1)
我认为,如果每天b
中的第一个值为0
,并且所有其他值都是连续的,则需要像样本一样:
m1 = df['b'].gt(1000)
m2 = df.groupby(['Date', m1]).cumcount().lt(13)
m = m1& m2
print (df[m])
Date Time a b c
4 2018-01-09 6:15:00 20.76 26738 -2.88
5 2018-01-09 6:30:00 21.40 22462 -2.77
6 2018-01-09 6:45:00 21.84 20033 -3.00
7 2018-01-09 7:00:00 22.17 20010 -3.28
8 2018-01-09 7:15:00 22.38 18133 -2.82
9 2018-01-09 7:30:00 22.75 18254 -3.14
10 2018-01-09 7:45:00 22.93 17039 -3.22
11 2018-01-09 8:00:00 23.13 15934 -3.27
12 2018-01-09 8:15:00 23.25 15438 -3.48
13 2018-01-09 8:30:00 23.44 16218 -3.65
14 2018-01-09 8:45:00 23.65 14666 -3.14
15 2018-01-09 9:00:00 24.01 14686 -3.10