python-3.x - 从底部开始的第一个最长零子序列之后的子数据帧
问题描述
Dataframedf
有两列 -timestamp
和qty
. df
以 unique 的升序排序timestamp
。timestamp
在列中第一次出现>= 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
解决方案
推荐阅读
- swift - 如何使用 AVAudioEngine 在同一时间更改音高和速率
- swift - 类型不能符合具有相同名称但可选的成员的协议
- vue.js - VuePress 主题继承设置
- python - 转换为估计器时的 LSTM InvalidArgumentError Tensorflow 2.0/Keras
- reactjs - 我可以以及如何使用 laravel 护照保护我的 react-router 路由吗
- reactjs - Firebase 错误:根据用户 UID 上传唯一存储文件夹时,对象“XXX/XXX/XXX.jpg”不存在
- ffmpeg - 将 MP4 转换为图像序列时,FFmpeg 正在丢帧
- linux - 获取运行命令时修改的文件列表的有效方法是什么?
- sql-server - SQL 处理用户每周在周表日历上设置的假期
- ruby-on-rails - 正则表达式:匹配特定字符