如何使用Python Pandas以'yyyymmdd'格式创建日期字符串列表?

big*_*bug 6 python datetime-format pandas

我想要一个日期范围列表,其中每个元素都是'yyyymmdd'格式字符串,例如:['20130226','20130227','20130228','20130301','20130302'].

我可以用pandas这样做:

>>> pandas.date_range('20130226','20130302')
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-02-26 00:00:00, ..., 2013-03-02 00:00:00]
Length: 5, Freq: D, Timezone: None
Run Code Online (Sandbox Code Playgroud)

但它是DatetimeIndex,我需要做一些额外的格式转换,那么如何以一种简洁的方式做到这一点呢?

zer*_*323 15

或者使用列表理解:

[d.strftime('%Y%m%d') for d in pandas.date_range('20130226','20130302')]
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 14

使用format:

>>> r = pandas.date_range('20130226','20130302')
>>> r.format(formatter=lambda x: x.strftime('%Y%m%d'))
['20130226', '20130227', '20130228', '20130301', '20130302']
Run Code Online (Sandbox Code Playgroud)

或使用map:

>>> r.map(lambda x: x.strftime('%Y%m%d'))
array(['20130226', '20130227', '20130228', '20130301', '20130302'], dtype=object)
Run Code Online (Sandbox Code Playgroud)


Mav*_*les 9

简单干净:直接使用 pandas date_range 和 strftime 执行此操作,如下所示:

pd.date_range(start='20130226',end='20130302',freq='D').strftime('%Y%m%d')
Run Code Online (Sandbox Code Playgroud)

结果:

Index(['20130226', '20130227', '20130228', '20130301', '20130302'], dtype='object')
Run Code Online (Sandbox Code Playgroud)