【发布时间】:2021-05-16 20:25:02
【问题描述】:
我有一个熊猫数据框:
我想通过以下方式计算确认和取消之间的差异:
对于日期 13.01.2020 和desk_id 1.0:10:35:00 - 8:00:00 + 12:36:00 - 11:36:00 + 20:00:00 - 13:36:00
我只能在确认和取消一小时的办公桌上执行这些操作。一小时是指在desk_id 的日期中,我只有一行用于确认和取消时间。当我从 8:00:00 确认和 20:00:00 减去取消时间并将它们加在一起时,我得到了有趣的差异。
有好几个小时,我无法把它放在一起。通过mamy hour,我的意思是desk_id在一个日期有几行取消和确认时间。我想选择日期、desk_id 并计算办公桌占用时间 - 每个办公桌的确认和取消之间的差异。
输出应如下所示:
我想找出一张桌子空闲的时间段。 在我的数据中可以在一个日期内进行多次确认和取消。
我做了一小时确认并取消:
df_1['confirm'] = pd.to_timedelta(df_1['confirm'].astype(str))
df_1['diff_confirm'] = df_1['confirm'].apply(lambda x: x - datetime.timedelta(days=0, hours=8, minutes=0))
df_1['cancel'] = pd.to_timedelta(df_1['cancel'].astype(str))
df_1['diff_cancel'] = df_1['cancel'].apply(lambda x: datetime.timedelta(days=0, hours=20, minutes=0)-x)
这行得通。
有什么建议吗?
【问题讨论】:
-
感谢您纠正问题!
-
确认和取消的“一小时”或“数小时”是什么意思?您是指
confirm和cancel列中的值之间的差异吗?请添加预期输出(您希望为您提供的输入获得什么),并阐明您希望实现的计算逻辑。 “许多小时”需要执行的计算是什么?这与“一小时”的计算有何不同? -
感谢您的评论!我更正了,这个问题现在可以理解了吗?
-
问题缺少一些数据。但是从你给我的东西我可以理解这些。如果我确实说错了,请纠正我,并确保在问题中也包括这些内容。 1) 工作从 08:00 开始,到 20:00 结束 2) 你想在每个 DAY 和每个 DESK ID 处计算它我真的不明白你说你的代码有效。我不太明白你想用它做什么。
标签: python pandas dataframe pandas-groupby timedelta