我的 Dataframe 有两个时间戳列,我需要添加第三个时间差列。我如何获得预期时间和实际时间之间的 * 常识 * 时间差?
如果您的预期时间是0800
,而您在0730
时早到,则会得到常识输出:
t1 = pd.to_datetime('1/1/2022 08:00')
t2 = pd.to_datetime('1/1/2022 07:30')
pd.Timedelta(t1-t2)
> Timedelta('0 days 00:30:00')
pd.Timedelta(t1-t2).seconds / 60.0 # Minutes
> 30.0
如果您的预期时间是0800
,而您在0830
时迟到了,则会得到相当奇怪的输出:
t1 = pd.to_datetime('1/1/2022 08:00')
t2 = pd.to_datetime('1/1/2022 08:30')
pd.Timedelta(t1-t2)
> Timedelta('-1 days +23:30:00')
pd.Timedelta(t1-t2).seconds / 60.0 # Minutes
> 1410.0
现在,我看到您可以通过减去24h或1440
分钟得出一个更符合 * 常识 * 的结果:
(pd.Timedelta(t1-t2).seconds / 60.0) - 1440 # Minutes
> -30.0
我想我可以创建一个函数和apply()
,但似乎这应该是一个共同的需要,虽然我没有看到任何我可以在Pandas的文档中使用.Timedelta
1条答案
按热度按时间jgovgodb1#
您应该使用
total_seconds
,而不是seconds
:输出:
-30