我有一份生产的产品或完成的过程清单,如下所示:
我想做的是计算在给定时间范围内没有产品/流程发生的时间量,例如从15:00到16:00,更具体地说,每天。 输出可以是“未发生任何事情的空闲分钟数/时间”或“空闲时间百分比”
import pandas as pd
import datetime
df = pd.read_csv('example_data.csv')
# generate list of products
listOfProducts = df['NAME'].drop_duplicates().tolist()
# define timeframe for each day
startTime = datetime.time(15, 0)
stopTime = datetime.time(16, 0)
# define daterange to look for
startDay = datetime(2021, 1, 1)
stopDay = datetime(2021,1, 5)
# do it for every product
for i in listOfProducts:
# filter dataframe by product
df_product = df[df['NAME'] == i]
# sort dataframe by start
df_product = df_product.sort_values(by='started')
# ... how to proceed?
所需的输出应如下所示或类似:
以下是一些重要的注意事项:
我很难以一种简单的方式实现它,因为这种边界情况使我无法计算时间增量。 在过去,我通过从这里逐行迭代并添加分钟或秒来解决这个问题。但我相信还有一种更简单的方法,可能是使用.groupby()函数
输入数据:
首先,将数据移出边界(7和8):
提取
Start
和Stop
datetime的分钟数。如果进程在15:00之前开始,请设置为0,因为我们只希望保留重叠部分。如果进程在16:00后结束,请将分钟设置为59创建一个空表
len(df1)x60'
以存储进程使用情况:填充
out
数据帧:最后,计算空闲分钟数:
注意:您必须确定
Stop
日期时间是否已关闭相关问题 更多 >
编程相关推荐