时间序列问题,我需要用另一个数字相加才能在 Python 中获取未来时间



我是python和数据分析的新手,我正在做一项任务。

我有一个数据帧,它将时间序列和时间(分钟(作为整数,我想进行计算,其中时间和分钟给出另一个时间,这将显示技术人员被占用/不可用。

数据帧示例:

Date_Time           Line    Downtime   Issue    Owner
2020-05-08 18:39:00 T10     32         Reason 1 Technician2
2020-05-08 19:20:00 T10     65         Reason 2 Technician3
2020-05-08 21:13:00 T14     20         Reason 1 Technician1
2020-05-08 21:26:00 T12     12         Reason 4 Technician4

我总共有 16 名技术人员,他们按班次划分(第 1 和第 2 班(,所以我希望在 06:00 到 14:00 之间有 8 名可用的技术人员。

一旦生产中出现问题,就会有技术人员去解决它,所以我当时有 7 名技术人员可用。 同时,如果在第一个问题尚未解决的情况下发生另一个问题,那么我有 6 名技术人员可用。

"停机时间"列以分钟表示。

我想要的输出如下:

Date_Time           Line    Downtime   Issue    Owner       Avail. Technicians
2020-05-08 18:39:00 T10     32         Reason 1 Technician2 7
2020-05-08 19:20:00 T10     65         Reason 2 Technician3 7
2020-05-08 21:13:00 T14     20         Reason 1 Technician1 7
2020-05-08 21:26:00 T12     12         Reason 4 Technician4 6

有可能达到这样的结果吗?

如果您有任何问题,请随时提问。我会尽力解释。

非常感谢!

您可以计算Done_Time并将其与Date_Time进行比较:

new_df = (df.assign(Done_time=df.Date_Time + pd.to_timedelta(df.Downtime, unit='min'))
.set_index('Owner',append=True)['Done_time']
.unstack('Owner')
.ffill()
)
num_busy = (df['Date_Time'].values[:,None] < new_df.values).sum(1)
df['Avail.Tech'] = 8 - num_busy

输出:

Date_Time Line  Downtime     Issue        Owner  Avail.Tech
0 2020-05-08 18:39:00  T10        32  Reason 1  Technician2           7
1 2020-05-08 19:20:00  T10        65  Reason 2  Technician3           7
2 2020-05-08 21:13:00  T14        20  Reason 1  Technician1           7
3 2020-05-08 21:26:00  T12        12  Reason 4  Technician4           6

最新更新