如何在熊猫中选择条件下的串行原始数据



我有下面的数据框...我想每天从 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
    .....

我怎样才能实现它?

我认为您需要按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

最新更新