Как вычислить максимальное количество дней между действиями?
Есть DataFrame, в одном из столбцов которого, хранятся даты действий в виде:
['2020-06-16 02:31:10', '2020-07-16 02:31:10', '2020-09-16 02:31:10', '2020-10-16 02:31:10']
Надо найти максимальный промежуток времени между действиями в днях и записать в новый столбец.
В данном примере это '2020-09-16 02:31:10' - '2020-07-16 02:31:10' = 62 дня
Подскажите, как лучше всего это сделать?
Ответы (2 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
datetime.strptime(строка, формат) — создает «date» объект из строки.
from datetime import datetime
arr = ['2020-06-16 02:31:10', '2020-07-16 02:31:10', '2020-09-16 02:31:10', '2020-10-16 02:31:10']
max_interval = 0 # в секундах
for k in range(1, len(arr)):
prev_date = datetime.strptime(arr[k-1], '%Y-%m-%d %H:%M:%S')
this_date = datetime.strptime(arr[k], '%Y-%m-%d %H:%M:%S')
diff = abs( (this_date - prev_date).total_seconds() )
max_interval = max(diff, max_interval)
print( diff ) # Test
print( max_interval / 60 / 60 // 24 ) # Перевод обратно в дни.
* Предполагается, что даты в массиве изначально отсортированы.
Автор решения: MaxU
→ Ссылка
Как-то так:
df['Date'] = pd.to_datetime(df['Date'])
max_days = df['Date'].diff().dt.days.abs().max()