перебирать список дат и вычислять количество дней между каждым интервалом - PullRequest
0 голосов
/ 23 октября 2018

Извините, если об этом уже спрашивали, но я не смог найти реальное решение моей проблемы.Я хотел бы рассчитать количество дат между каждым интервалом в списке дат, который выглядит как

dates: 

['06/02/2008', '07/01/2008', '10/12/2007', '05/11/2007', '09/10/2007', '10/09/2007', 
'06/08/2007', '10/07/2007', '04/06/2007', '08/05/2007', '10/04/2007', '12/03/2007',
'05/02/2007', '08/01/2007', '11/12/2006', '06/11/2006', '10/10/2006', '05/09/2006',
 '07/08/2006', '10/07/2006', '05/06/2006', '08/05/2006', '10/04/2006', '13/03/2006',
 '06/02/2006', '09/01/2006', '05/12/2005', '07/11/2005', '11/10/2005', '06/09/2005',
'08/08/2005', '11/07/2005', '06/06/2005', '09/05/2005', '04/04/2005', '07/03/2005',
 '09/02/2005']

Я пытался сделать что-то вроде delta = dates - dates.shift(-1), но безуспешно.В результате я хотел бы получить список с именем delta, в котором у меня есть количество дней между интервалами.Например, первое различие «06/02/2008» - «07/01/2008» = 30 дней.Формат даты: «дд / мм / гггг»

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

1 Ответ

0 голосов
/ 23 октября 2018

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

dates = pd.to_datetime(dates, format='%d/%m/%Y')
delta =  dates[:-1] - dates[1:]
print (delta)
TimedeltaIndex(['30 days', '28 days', '35 days', '27 days', '29 days',
                '35 days', '27 days', '36 days', '27 days', '28 days',
                '29 days', '35 days', '28 days', '28 days', '35 days',
                '27 days', '35 days', '29 days', '28 days', '35 days',
                '28 days', '28 days', '28 days', '35 days', '28 days',
                '35 days', '28 days', '27 days', '35 days', '29 days',
                '28 days', '35 days', '28 days', '35 days', '28 days',
                '26 days'],
               dtype='timedelta64[ns]', freq=None)

И, если необходимо, добавьте целые числа TimedeltaIndex.days:

delta =  (dates[:-1] - dates[1:]).days
print (delta)
Int64Index([30, 28, 35, 27, 29, 35, 27, 36, 27, 28, 29, 35, 28, 28, 35, 27, 35,
            29, 28, 35, 28, 28, 28, 35, 28, 35, 28, 27, 35, 29, 28, 35, 28, 35,
            28, 26],
           dtype='int64')

delta =  (dates[:-1] - dates[1:]).days.tolist()
print (delta)
[30, 28, 35, 27, 29, 35, 27, 36, 27, 28, 29, 35, 28, 28, 35, 27, 35, 29, 28, 
 35, 28, 28, 28, 35, 28, 35, 28, 27, 35, 29, 28, 35, 28, 35, 28, 26]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...