我想弄清楚一个方法来找到此列表中连续的一对项之间的时间滞后。两个时间项之间的区别
L1=[['8/1/2000', '0:00:16'],
['8/1/2008', '0:23:09'],
['8/2/2008', '12:32:16'],
['8/2/2008', '0:38:29']]
所以输出看起来像图1和2 = 0时22分53秒,但图2和3之间的差之间的差希望24小时+/-差而不仅仅是0时06分58秒。希望这是有道理的。任何帮助表示赞赏。
我想弄清楚一个方法来找到此列表中连续的一对项之间的时间滞后。两个时间项之间的区别
L1=[['8/1/2000', '0:00:16'],
['8/1/2008', '0:23:09'],
['8/2/2008', '12:32:16'],
['8/2/2008', '0:38:29']]
所以输出看起来像图1和2 = 0时22分53秒,但图2和3之间的差之间的差希望24小时+/-差而不仅仅是0时06分58秒。希望这是有道理的。任何帮助表示赞赏。
由于这似乎是一个匆匆奔跑的问题,所以我会简单地向您指出datetime模块的方向,给出一个示例,然后将其余部分留给您。
首先,我们将把您的字符串(或我们已经假定是字符串)到datetime对象:
>>> from datetime import datetime
>>> L1 = [['8/1/2000', '0:00:16'], ['8/1/2008', '0:23:09'], ['8/2/2008', '12:32:16'], ['8/2/2008', '0:38:29']]
>>> d1 = [datetime.strptime(' '.join(dt), '%m/%d/%Y %H:%M:%S') for dt in L1]
>>> d1
[datetime.datetime(2000, 8, 1, 0, 0, 16), datetime.datetime(2008, 8, 1, 0, 23, 9), datetime.datetime(2008, 8, 2, 12, 32, 16), datetime.datetime(2008, 8, 2, 0, 38, 29)]
>>> for d in d1:
... print(d)
...
2000-08-01 00:00:16
2008-08-01 00:23:09
2008-08-02 12:32:16
2008-08-02 00:38:29
这些我们可以简单地减,生产timedelta对象:
>>> diffs = [y-x for x,y in zip(d1, d1[1:])]
>>> diffs
[datetime.timedelta(2922, 1373), datetime.timedelta(1, 43747), datetime.timedelta(-1, 43573)]
>>> for diff in diffs:
... print(diff)
...
2922 days, 0:22:53
1 day, 12:09:07
-1 day, 12:06:13
你的'L1'行会产生一个SyntaxError。元素是否实际上是字符串?如果是这样,他们看起来像是'8/1/2000,0:00:16'还是'8/1/2000','0:00:16'? – DSM
我假设他们是字符串并进行相应编辑。如果我错误地做了这些,让我知道或者随时回滚。 – kojiro
你是如何在2到3之间得到0:06:58的?或者说,“时间滞后”意味着什么(我不太清楚“时滞”是什么) – MxyL