在熊猫中,我使用的是字符串格式的日期YYYY-MM-DD
以YYYY-MM-DD
格式递增日期的最快方法是什么?
d1 = '2018-02-10'
我想将其递增 1 并将结果恢复为字符串:
d1_inc = '2018-02-11'
纯Python
您可以使用标准库的一部分datetime
模块。有 3 个步骤:
- 通过
strptime
将字符串转换为datetime
对象。 - 通过
timedelta
添加一天。 - 通过
strftime
将生成的datetime
对象转换回字符串。
下面是一个演示:
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
使用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
您可以对日期时间和时间增量对象执行算术运算。
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)
你的意思是这样的
date = datetime.date(2015,5,15)
date += datetime.timedelta(days=1)
这取决于你所说的最快是什么意思。我假设你的意思是最快的编程方法,而不是最短的程序执行时间(当你做很多这些事情时,这可能是相关的(。
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')
分步版本:
从字符串创建一个日期时间对象,请注意显示 python 格式的字符串(有关更多信息,请参阅文档(
dt = datetime.strptime(original_date, '%Y-%m-%d')
添加日期
dt += timedelta(days=1)
将其重新格式化为请求的字符串
print(dt.strftime('%Y-%m-%d'))
就这样!