2015-10-01 3 views
1

Я хотел бы извлечь две даты и представить результат в секундах. Я:Извлечь две даты, результат в секундах (pandas)

dftask['TimeWindowDuration'] = dftask['LatestEnd'] - dftask['EarliestStart'] 

LatestEnd и EarliestStart являются: datetime64[ns]

Соответствующий выход dataframe:

LatestEnd EarliestStart TimeWindowDuration 
27-7-2015 22:57 27-7-2015 22:14 0 days 00:43:00.000000000 
28-7-2015 6:20 28-7-2015 1:50 0 days 04:30:00.000000000 
28-7-2015 6:45 27-7-2015 20:32 0 days 10:13:00.000000000 
28-7-2015 7:00 27-7-2015 21:47 0 days 09:13:00.000000000 
28-7-2015 6:15 28-7-2015 1:45 0 days 04:30:00.000000000 

Как определить, что TimeWindowDuration в секундах? unit='s'

Спасибо за помощь!

+0

Пожалуйста, прочтите [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – Psytho

+0

@ Alex.S не знаю, что не так в моем сообщении? Я предоставляю код, пример и результаты? И это тоже минимально. – F1990

+0

Я попытался выполнить код, который вы указали, и догадался, что произошло. – Psytho

ответ

2

Попробуйте использовать timedelta.total_seconds() как:

dftask['TimeWindowDuration'].total_seconds() 

Пример:

d1 = datetime(2015, 10, 1, 10, 56, 21) 
d2 = datetime(2015, 10, 1, 10, 58, 21) 
d3 = d2-d1 

In [21]: d3.total_seconds() 
Out[21]: 120.0 

EDIT:

Пусть:

In [5]: import pandas as pd 

In [6]: a = pd.to_timedelta('0 days 00:43:00.000000000',unit='s') 

In [7]: a 
Out[7]: Timedelta('0 days 00:43:00') 

In [8]: a.total_seconds() 
Out[8]: 2580.0 

Надежда, что помогает.

EDIT 2:

В вашем dataframe:

dftask['TimeWindowDuration'] = (dftask['LatestEnd'] - dftask['EarliestStart']).dt.seconds 

Не забудьте прочитать dataframe или разобрать столбцы даты с parse_dates=['LatestEnd','EarliestStart'].

+0

Привет @Fabio благодарит за ваш ответ, но это приводит к тому, что объект «Серии» не имеет атрибута «total_seconds», а Timewindowduration = timedelta64 [ns] – F1990

+0

Можете ли вы отредактировать свой вопрос с образцом исходного фрейма, чтобы мы могли воспроизвести вашу проблему ? –

+0

Я изменил сообщение и добавил dataframe – F1990

Смежные вопросы