我有以下数据框... 我希望每天从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 10000 -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 5:30:00 20.57 10000 -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
.....
我怎样才能实现它?
答案 0 :(得分:2)
我认为您需要按boolean indexing
进行过滤,然后按GroupBy.head
每天选择12
行。
条件在第一个值b > 1000
之后每天选择所有行。
#changed data with multiple days for better test
print (df)
Date Time a b c
0 2018-01-09 5:15:00 20.55 0 -3.07
1 2018-01-09 5:30:00 20.57 10000 -3.07
2 2018-01-09 5:45:00 20.33 0 -3.44
3 2018-01-09 6:00:00 20.31 0 -2.95
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-02-09 7:00:00 22.17 100 -3.28
8 2018-02-09 7:15:00 22.38 0 -2.82
9 2018-02-09 7:30:00 22.75 18254 -3.14
10 2018-02-09 7:45:00 22.93 0 -3.22
11 2018-02-09 8:00:00 23.13 0 -3.27
12 2018-02-09 8:15:00 23.25 15438 -3.48
13 2018-02-09 8:30:00 23.44 16218 -3.65
14 2018-02-09 8:45:00 23.65 14666 -3.14
15 2018-02-09 9:00:00 24.01 14686 -3.10
m = df['b'].gt(1000).groupby(df.index.get_level_values(0)).cumsum().gt(0)
df = df[m].groupby('Date').head(12)
print (df)
Date Time a b c
1 2018-01-09 5:30:00 20.57 10000 -3.07
2 2018-01-09 5:45:00 20.33 0 -3.44
3 2018-01-09 6:00:00 20.31 0 -2.95
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
9 2018-02-09 7:30:00 22.75 18254 -3.14
10 2018-02-09 7:45:00 22.93 0 -3.22
11 2018-02-09 8:00:00 23.13 0 -3.27
12 2018-02-09 8:15:00 23.25 15438 -3.48
13 2018-02-09 8:30:00 23.44 16218 -3.65
14 2018-02-09 8:45:00 23.65 14666 -3.14
15 2018-02-09 9:00:00 24.01 14686 -3.10