我试图以列表格式获取3天的返回日期。我到现在所做的是:
datelist = pd.date_range(pd.datetime.today(), periods=3).tolist()
>>> datelist
[Timestamp('2018-01-31 20:03:51.068944', freq='D'), Timestamp('2018-02-01 20:03:51.068944', freq='D'), Timestamp('2018-02-02 20:03:51.068944', freq='D')]
>>> datelist = pd.date_range(pd.datetime.today(), periods=-3).tolist()
>>> datelist
[]
>>> datelist = pd.date_range(pd.datetime.today()-1, periods=-3).tolist()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'int'
首先,我有3天的前进日期。
但是我希望有3天向后而不是向前但是如果我做-3
它会给[]
。而且我愿意拥有今天生活的日子...意味着今天前一天。但是有错误。
我愿意以下列格式获取输出列表:
datelist = ['20180130','20180129','20180128']
请建议我尝试一下。
答案 0 :(得分:2)
从今天开始按date_range
生成第一天的第一个减法,并在sort_values
添加strftime
:
N = 3
datelist = (pd.date_range(pd.datetime.today() - pd.offsets.DateOffset(days=N), periods=N)
.sort_values(ascending=False)
.strftime('%Y%m%d'))
datelist = (pd.date_range(pd.datetime.today() - pd.Timedelta(days=N), periods=N)
.sort_values(ascending=False)
.strftime('%Y%m%d'))
print (datelist)
['20180130' '20180129' '20180128']
第一个回答:
使用list comprehension
:
a = [(x - pd.offsets.DateOffset(days=3)).strftime('%Y%m%d') for x in datelist]
a = [(x - pd.Timedelta(days=3)).strftime('%Y%m%d') for x in datelist]
print (a)
['20180128', '20180129', '20180130']
或转换为DatetimeIndex
并减去Timedelta
:
a = (pd.DatetimeIndex(datelist) - pd.Timedelta(days=3)).strftime('%Y%m%d').tolist()
a = (pd.DatetimeIndex(datelist) - pd.offsets.DateOffset(days=3)).strftime('%Y%m%d').tolist()