如何在熊猫中选择连续的原始状态?

时间:2018-01-24 05:52:23

标签: pandas select time-series conditional-statements

我有以下时间序列数据帧,我想在条件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做到这一点?

1 个答案:

答案 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