Какой самый быстрый способ увеличить строку даты YYYY-MM-DD в Python? - PullRequest
0 голосов
/ 15 мая 2018

В Пандах я использую даты со строковым форматом YYYY-MM-DD Какой самый быстрый способ увеличить дату с результатом в формате YYYY-MM-DD?

d1 = '2018-02-10'

Я хочу увеличить ее на 1и получить результат обратно в виде строки:

d1_inc = '2018-02-11'

Ответы [ 5 ]

0 голосов
/ 15 мая 2018

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

from datetime import datetime, timedelta

original_date = '2018-5-15'

print('The original date is {}, the date one day later is: {}'.
       format(original_date, (datetime.strptime(original_date, '%Y-%m-%d') + 
       timedelta(days=1)).strftime('%Y-%m-%d')

Пошаговая версия:

Создайте объект datetime из строки, обратите внимание на строку, которая показывает python форматирование (см. документацию для получения дополнительной информации )

dt = datetime.strptime(original_date, '%Y-%m-%d')

Добавить день

dt += timedelta(days=1)

Переформатировать его обратно в запрошенную строку

print(dt.strftime('%Y-%m-%d'))

Вот и все!

0 голосов
/ 15 мая 2018

Ты имеешь в виду, как это

date = datetime.date(2015,5,15)
date += datetime.timedelta(days=1)
0 голосов
/ 15 мая 2018

Использование pd.to_datetime, pd.TimeDelta и strftime:

fmt = '%Y-%m-%d'
(pd.to_datetime(<your series or column>, format=fmt) + pd.Timedelta('1 days')).dt.strftime(date_format=fmt)

Пример

df = pd.DataFrame({'date': ['2017-04-02', '2017-04-23']})
fmt = '%Y-%m-%d'
>>> (pd.to_datetime(df.date, format=fmt) + pd.Timedelta('1 days')).dt.strftime(date_format=fmt)
0    2017-04-03
1    2017-04-24
Name: date, dtype: object
0 голосов
/ 15 мая 2018

Pure Python

Вы можете использовать модуль datetime, входящий в стандартную библиотеку.Есть 3 шага:

  1. Преобразование строки в datetime объект с помощью strptime.
  2. Добавление дня с помощью timedelta.
  3. Преобразование результата datetime Возврат к строке через strftime.

Вот пример:

from datetime import datetime, timedelta

x = '2017-05-15'
res = (datetime.strptime(x, '%Y-%m-%d') + timedelta(days=1)).strftime('%Y-%m-%d')

print(res)    
# 2017-05-16

Pandas

Эквивалентные шаги можно выполнить с помощью сторонних панд:

x = '2017-05-15'

# choose some combination of below methods
res = (pd.Timestamp(x) + pd.DateOffset(days=1)).strftime('%Y-%m-%d')
res = (pd.to_datetime(x) + pd.Timedelta('1 day')).strftime('%Y-%m-%d')

print(res)
# 2017-05-16
0 голосов
/ 15 мая 2018

Вы можете выполнять арифметические операции с объектами datetime и timedelta.

from datetime import datetime, timedelta

d = datetime(year=2018, month=3, day=1)
t = timedelta(days=1)

d + t
# datetime.datetime(2018, 3, 2, 0, 0)

d + t + t
# datetime.datetime(2018, 3, 3, 0, 0)

for i in range(30):
    d += 1

print(d)
# datetime.datetime(2018, 3, 31, 0, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...