Myk*_*tko 9 python timestamp time-series timedelta pandas
我通过减去较早的时间戳为较晚的时间戳得到了这个奇怪的结果:
pd.to_datetime('2021-05-21 06:00:00') - pd.to_datetime('2021-05-21 06:02:00')
Run Code Online (Sandbox Code Playgroud)
输出:
Timedelta('-1 days +23:58:00')
Run Code Online (Sandbox Code Playgroud)
预期输出:
Timedelta('-0 days 00:02:00')
Run Code Online (Sandbox Code Playgroud)
计算负时差的正确方法是什么?谢谢你!
Timedelta('-1 days +23:58:00')
是pandas 中负时间差的正确表示(也在纯 python 中)
# using pure python
from datetime import datetime
datetime(2021,5,21,6,0,0) - datetime(2021,5,21,6,2,0)
datetime.timedelta(days=-1, seconds=86280)
Run Code Online (Sandbox Code Playgroud)
这是因为差异被正确计算为-120 seconds
,但单个时间元素不能超过它们的模数。timedelta 分量已标准化。为了表示负 2 分钟,使用负日和正时间分量。
然后将天、秒和微秒标准化,以便表示是唯一的,其中
- 0 <= 微秒 < 1000000
- 0 <= 秒 < 3600*24(一天的秒数)
- -999999999 <= 天 <= 999999999
请注意,负值的标准化一开始可能会令人惊讶。例如:
from datetime import timedelta
d = timedelta(microseconds=-1)
(d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)
Run Code Online (Sandbox Code Playgroud)
可以使用该方法将总秒数检索为负整数Timedelta.total_seconds
我们可以做的total_seconds
(pd.to_datetime('2021-05-21 06:00:00') - pd.to_datetime('2021-05-21 06:02:00')).total_seconds()
Out[9]: -120.0
Run Code Online (Sandbox Code Playgroud)