Oli*_*Oli 7 python time time-series
我正在寻找一种数据类型来帮助我模拟流动时间内的资源可用性。
我从多个方向解决了这个问题,但总是回到不知道数据类型来建模像整数这样简单的东西的基本问题。
我可以将我的约会转换为时间序列事件(例如,约会到达意味着 -1 可用性,约会离开意味着 +1)但我仍然不知道如何操作该数据,以便我可以提取可用性大于零的时间段.
有人以缺乏重点为由进行了近距离投票,但我在这里的目标似乎很单一,因此我将尝试以图形方式解释问题。我试图推断活动作业数量低于给定容量的时间段。
将一系列已知的并行容量(例如 9-6 之间的 3 个)和具有可变开始/结束的作业列表转换为可用时间的时间范围列表。
小智 8
我的方法是构建时间序列,但包括可用性对象,该对象的值设置为该期间的可用性。
availability:
[
{
"start": 09:00,
"end": 12:00,
"value": 4
},
{
"start": 12:00,
"end": 13:00,
"value": 3
}
]
Run Code Online (Sandbox Code Playgroud)
data: [
{
"start": 10:00,
"end": 10:30,
}
]
Run Code Online (Sandbox Code Playgroud)
在开始/结束时间建立时间序列索引,以值作为值。可用性的开始时间是+值,结束时间是-值。对于事件,如您所说,它是 -1 或 +1。
"09:00" 4
"10:00" -1
"10:30" 1
"12:00" -4
"12:00" 3
"13:00" -3
Run Code Online (Sandbox Code Playgroud)
然后按索引、总和和累计总和分组。
得到:
"09:00" 4
"10:00" 3
"10:30" 4
"12:00" 3
"13:00" 0
Run Code Online (Sandbox Code Playgroud)
熊猫中的示例代码:
availability:
[
{
"start": 09:00,
"end": 12:00,
"value": 4
},
{
"start": 12:00,
"end": 13:00,
"value": 3
}
]
Run Code Online (Sandbox Code Playgroud)
最后返回:
start end value available
0 00:00 09:00 0 False
1 09:00 13:00 4 True
2 13:00 00:00 0 False
Run Code Online (Sandbox Code Playgroud)