определить, сколько времени прошло (datatime) между двумя строками - PullRequest
0 голосов
/ 01 мая 2020
Subject.iloc[1, 0]  is equal to 

datetime.time(13, 16, 14, 336000)

и

Subject.iloc[2, 0]  is equal to 

datetime.time(13, 16, 14, 338000)

Все, что я хочу сделать, - это найти прошедшее время от Subject.iloc [1, 0] до Subject.iloc [2, 0]. Но когда я вычитаю их, это говорит:

Subject.iloc[1, 0]-Subject.iloc[2, 0]
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

Но тогда я подумал, что, возможно, мне следует использовать дельту времени

  pd.to_timedelta(Subject.iloc[2, 0].astype(str))

, которая говорит AttributeError: «объект datetime.time» не имеет атрибута » astype '

Может кто-нибудь помочь мне с этим? Что я делаю не так?

Даже это

pd.to_timedelta(Subject.iloc[2, 0]) won't work

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Я должен был сделать это недавно для работы на самом деле. Вы можете преобразовать дату и время (или объект структуры времени в моем случае) в «секунды с начала эпохи», а затем сравнить их.

В Python как преобразовать объект `datetime` в секунды?

Для меня это было сложнее:

durSec = time.mktime(time.strptime(data[7], "%Y-%m-%d %H:%M:%S")) - time.mktime(time.strptime(data[6], "%Y-%m-%d %H:%M:%S"))
1 голос
/ 01 мая 2020

Вы можете попробовать сделать это

d1 = datetime.datetime.combine(datetime.date.today(), Subject.iloc[2, 0])
d2 = datetime.datetime.combine(datetime.date.today(), Subject.iloc[1, 0])
diff = d1 - d2

Чтобы использовать Pandas 'to_timedelta, выполните следующие действия:

pd.to_timedelta(str(Subject.iloc[2, 0]))
...