【发布时间】:2021-09-30 11:47:29
【问题描述】:
在 python notebook 中,我从数据库中提取了时间序列的明细表。
df = data.select("*").toPandas()
值大于2或小于-2推导哪个指标(空值视为Y):
df =
| Key | Time | Indicator | Value |
|---|---|---|---|
| A | 2021-01-01 00:00 | Y | 2.00 |
| A | 2021-01-01 00:15 | Y | 3.00 |
| A | 2021-01-01 00:30 | N | 1.00 |
| A | 2021-01-01 00:45 | Y | 10.00 |
| A | 2021-01-01 01:10 | Y | 8.00 |
| A | 2021-01-01 01:20 | Y | 6.00 |
| A | 2021-01-01 01:40 | Y | 4.00 |
| A | 2021-01-01 02:05 | Y | -- |
| A | 2021-01-01 02:20 | N | -1.50 |
| B | 2021-01-01 02:55 | Y | -3.00 |
| B | 2021-01-01 03:00 | N | -0.50 |
| B | 2021-01-01 03:05 | Y | -4.00 |
| C | 2021-01-01 03:25 | Y | 3.00 |
| C | 2021-01-01 03:35 | Y | 3.00 |
| C | 2021-01-01 03:50 | Y | -- |
我想用以下标准计算一个新表:
- 在同一个键内
- 连续指标 = Y
然后创建一个包含开始时间、结束时间、持续时间、最大值的行。值和最小值价值
其中:
start_time = 指标的第一行 = 同一键的 Y AND
(end_time = 指标最后一条记录的下一行 = 同一键的 Y OR
end_time = 指示符最后一条记录的最后一行 = Y 如果下一条记录是不同的键)
然后计算持续时间,最大值。每个子集的值和最小值。
虽然最大。和分钟。 values 不会考虑空值。
结果:
df_s =
| Key | start_time | end_time | duration(min) | max_value | min_value |
|---|---|---|---|---|---|
| A | 2021-01-01 00:00 | 2021-01-01 00:30 | 30.00 | 3.00 | 2.00 |
| A | 2021-01-01 00:45 | 2021-01-01 02:20 | 95.00 | 10.00 | 4.00 |
| B | 2021-01-01 02:55 | 2021-01-01 03:00 | 5.00 | -3.00 | -3.00 |
| C | 2021-01-01 03:05 | 2021-01-01 03:25 | 20.00 | -4.00 | -4.00 |
| C | 2021-01-01 03:25 | 2021-01-01 03:50 | 25.00 | 3.00 | 5.00 |
我应该如何计算 df 来创建新表 df_s ?
谢谢!
【问题讨论】:
-
同一个key和不同key是否真的需要
end_time的不同标准?
标签: python pandas dataframe date datetime