gpt4 book ai didi

python - 当所有机器都忙时的标志列?

转载 作者:行者123 更新时间:2023-12-01 07:45:35 24 4
gpt4 key购买 nike

我在机器上有一个交易数据帧,按开始时间(datetime.time 列)按时间顺序排序。机器有位置 A、B、C 等。我想创建一个标志列,显示该位置中的所有计算机当前是否正在使用,即事务的开始时间在该位置其他计算机的开始/结束时间之内。

我试图通过确定所有机器何时繁忙来推断机器何时可以排队。

我的数据帧启发式地布置在下面,目前缺少“全忙”列:

terminal ID    MACHINE_LOCATION    MACHINE_COUNT    TRANS_TIME      NEXT_TIME all busy

001 A 3 09:00:00 09:08:00 N
002 A 3 09:01:00 09:04:00 N
003 A 3 09:02:00 09:07:00 Y
002 A 3 09:06:00 09:07:00 Y
004 B 3 09:07:00 09:09:00 N

我希望创建“全忙”列,但无法计算出逻辑。

编辑:我的尝试:

for i, r in df.iterrows():
subgr = df[(df['MACHINE_LOCATION'] == r['MACHINE_LOCATION'])&(df['TRANS_DTE'] ==
r['TRANS_DTE'])&(df['TRANS_HR'] == r['TRANS_HR'])]

if len(subgr[(subgr['TRANS_TIME'] < r['TRANS_TIME'])&(subgr['NEXT_TIME'] >
r['TRANS_TIME'])]) == r['MACHINE_COUNT']:
df.loc[i,'ALL_BUSY'] = 'Y'
else:
df.loc[i,'ALL_BUSY'] = 'N'

但这需要 34 天才能完成运行(!!!)

有人可以向量化这个操作吗?

最佳答案

您可以使用以下代码:

df['all_are_busy'] = df.groupby(['location'])['all busy'].transform(lambda x: x.eq('Y').all())

小心:如果某个位置只有一台机器,这也会返回 True

关于python - 当所有机器都忙时的标志列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com