0

YearMonthDay有没有办法以Python的形式生成日期列表?我需要为 2010 年 6 月 12 日至 2012 年 12 月 8 日之间的每个星期六制作一个包含该格式日期的列表。

我尝试过pandas.date_range('6/12/2010','12/8/2012', freq='W-SAT'),但无法将生成的时间戳对象转换为上述格式。

4

4 回答 4

2

pandas 0.8开始,该Timestamp类型继承了datetime标准库中的标准类。因此,您可以使用datetime.strftime,

>>> [ d.strftime('%Y%m%d') for d in pandas.date_range('6/12/2010','12/8/2012', freq='W-SAT') ]
['20100612',
 '20100619',
 '20100626',
 '20100703',
...
于 2012-12-10T16:06:47.610 回答
0

是的,您使用日期时间库并创建星期六的第一个作为date对象。然后创建一个timedelta7 天的对象,并将其添加到第一个date对象。继续添加,直到到达最后一个星期六。

要从这些对象创建 'yearmonthday' 格式的字符串,最简单的.strftime()方法是使用对象的方法。

于 2012-12-10T16:00:17.740 回答
0

像这样的东西应该可以获取日期(仅datetime在标准库中使用)。

from datetime import date,timedelta

def first_sat_after(d):
    for i in range(7):
        new_day = d.replace(day = d.day + i)
        if new_day.weekday() == 6:
            return new_day

def weekday_range(d1,dend):
    week = timedelta(days = 7)
    yield d1
    d2 = d1 + week
    while d2 <= dend:
        yield d2
        d2 = d2 + week

所以你的程序看起来像:

d1 = date(2010,6,12)
dend = date(2012,8,12)

date_strings = [ x.strftime('%Y%m%d') for x in weekday_range(first_sat_after(d1),dend) ]
于 2012-12-10T16:03:06.950 回答
0

我认为您只想使用格式化(尽管不相信这需要熊猫!-查看 dateutil 或仅使用内置的 datetime 模块):

>>> dr = pandas.date_range('6/12/2010','12/8/2012', freq='W-SAT')
>>> ['{:%B %d %Y}'.format(d) for d in dr[:5]]
['June 12 2010', 'June 19 2010', 'June 26 2010', 'July 03 2010', 'July 10 2010']
>>> ['{:%Y%m%d}'.format(d) for d in dr[:5]]
['20100612', '20100619', '20100626', '20100703', '20100710']
于 2012-12-10T16:07:32.263 回答