首页 > 解决方案 > 从底部开始的第一个最长零子序列之后的子数据帧

问题描述

Dataframedf有两列 -timestampqty. df以 unique 的升序排序timestamptimestamp在列中第一次出现>= n连续零之后,从底部的第一个开始查找子数据帧qty

例如,

>>> import pandas as pd
>>> from datetime import datetime
>>> df = pd.DataFrame({'timestamp':[datetime(2018,12,1), datetime(2019,4,1), datetime(2019,5,1), datetime(2019,8,1), datetime(2019,12,1), datetime(2020,4,1), datetime(2020,8,1), datetime(2020,9,1), datetime(2020,10,1), datetime(2020,11,1), datetime(2020,11,11), datetime(2020,12,1), datetime(2020,12,11), datetime(2021,1,1)], 'qty':[187.11, 340,0,0,2947.65,0,0,0,5,0,0,15,0,23]})
>>> df
    timestamp      qty
0  2018-12-01   187.11
1  2019-04-01   340.00
2  2019-05-01     0.00
3  2019-08-01     0.00
4  2019-12-01  2947.65
5  2020-04-01     0.00
6  2020-08-01     0.00
7  2020-09-01     0.00
8  2020-10-01     5.00
9  2020-11-01     0.00
10 2020-11-11     0.00
11 2020-12-01    15.00
12 2020-12-11     0.00
13 2021-01-01    23.00

期望的输出:
在这种情况下,n=3输出是从以下开始的数据帧2020-10-01

    timestamp      qty
8  2020-10-01     5.00
9  2020-11-01     0.00
10 2020-11-11     0.00
11 2020-12-01    15.00
12 2020-12-11     0.00
13 2021-01-01    23.00

n=2输出是从以下开始的数据帧2020-12-01

    timestamp      qty
11 2020-12-01    15.00
12 2020-12-11     0.00
13 2021-01-01    23.00

n=1输出是从以下开始的数据帧2021-01-01

    timestamp      qty
13 2021-01-01    23.00

标签: python-3.xdataframesubsequence

解决方案


推荐阅读