在Python中查找列表之间的日期时间差异

时间:2018-08-10 16:49:33

标签: python list pandas datetime

我是python的新手。我看过以前的线程,例如thisthis。我有这样创建的一系列日期和时间:

tp1=[]
for f in files: ### files is the variable that has all the files I need to read in this loop
 t=f[-19:-5] ### these characters in the filename correspond to the date and time
 tp1.append(datetime.strptime(t,"%Y%m%d%H%M%S"))
time_p1_cr=pd.to_datetime(pd.Series(tp1), format='%Y-%m-%d %H:%M:%S')

tp1看起来像:

[datetime.datetime(2018, 8, 1, 16, 6, 39),

datetime.datetime(2018, 8, 2, 17, 16, 37),

datetime.datetime(2018, 8, 3, 10, 53, 46),

datetime.datetime(2018, 8, 3, 17, 14, 39),

datetime.datetime(2018, 8, 4, 11, 21, 36),

datetime.datetime(2018, 8, 4, 17, 27, 54),

,依此类推。 time_p1_cr看起来像:

0    2018-08-01 16:06:39

1    2018-08-02 17:16:37

2    2018-08-03 10:53:46

3    2018-08-03 17:14:39

,依此类推。我需要找到列表元素之间的连续差异。我基本上需要时差。我做不到

t2=tp1[1:]
t3=tp1[:-1]
t4=t3-t2

因为t2和t3是列表,所以我不能减去列表。

所以,我尝试了

test1=time_p1_cr[1:]
test2=time_p1_cr[:-1]
test3=test1.subtract(test2) 

根据this。 但是test3原来是

test3

0       NaT

1    0 days

2    0 days

3    0 days

4    0 days

5    0 days

6    0 days

7    0 days

,依此类推。如何获得连续元素之间的时间差?

1 个答案:

答案 0 :(得分:0)

您可以使用列表推导来执行此操作。例如:

differences = [t2 - t1 for t1,t2 in zip(time_p1_cr[:-1], time_p1_cr[1:])]

这将为您提供datetime.timedelta的列表。