У меня есть список временных меток, и я хочу просмотреть их и посмотреть, не превышает ли разница времени между каждым из них более 4 часов. Вот какой-то псевдокод, который я пробовал, но я не знаю синтаксиса в пандах:

timestamps = ["7/20/2020  12:38:39 AM", "7/20/2020  2:50:46 AM","7/25/2020  7:18:55 PM"]

for x in range(0,len(timestamps)-1):
    t1 = timestamps[x]
    t2 = time[timestamps[x+1]
    if (t2 - t1) >4 hours:
        print('Greater Than 4 hours!')
0
angle_201 30 Июл 2020 в 05:56

2 ответа

Лучший ответ

Вам нужно использовать модуль datetime из библиотеки datetime:

import datetime as dt
timestamps = ["7/20/2020  12:38:39 AM", "7/20/2020  2:50:46 AM","7/25/2020  7:18:55 PM"]

for x in range(0,len(timestamps)-1):
    t1 = dt.datetime.strptime(timestamps[x], "%m/%d/%Y  %H:%M:%S %p")
    t2 = dt.datetime.strptime(timestamps[x+1], "%m/%d/%Y  %H:%M:%S %p")
    if (t2 - t1) > dt.timedelta(hours=4):
        print(x, 'Greater Than 4 hours!')
    else:
        print(x, 'Not Greater Than 4 hours!')

В качестве альтернативы, вы также можете попробовать использовать приведенное ниже вместо timedelta:

from dateutil.relativedelta import relativedelta

Pd.to_datetime () также является опцией, но pandas - это тяжелая библиотека, я бы держался подальше от нее, если бы она не использовалась в других местах моего кода.

0
Rion DMello 30 Июл 2020 в 03:29

Надеюсь, это ответит на ваш вопрос:

import pandas as pd
timestamps = ["7/20/2020  12:38:39 AM", "7/20/2020  2:50:46 AM","7/25/2020  7:18:55 PM"]
timestamps = pd.to_datetime(timestamps)

for i in range(0,len(timestamps)-1):
    t1 = timestamps[i]
    t2 = timestamps[i+1]
    diff = (t2 - t1).seconds / 3600
    if diff > 4:
        print('Greater Than 4 hours!')
0
S Haskin 30 Июл 2020 в 03:24