Pandas date_range 从一周中的某一天开始,每周一次

Sum*_*han 4 python datetime pandas

寻找一种复杂的方式循环遍历日期范围并仅在每个星期日运行。

import pandas

for da in pandas.date_range("20181101","20181217",freq='B'):
    runJob()
Run Code Online (Sandbox Code Playgroud)

但是是否有一些选项可以在日期范围内的每个星期日运行循环?

cs9*_*s95 8

设置freq='W-SUN'为仅指定星期日:

pd.date_range("20181101", "20181217", freq='W-SUN')

DatetimeIndex(['2018-11-04', '2018-11-11', '2018-11-18', '2018-11-25',
               '2018-12-02', '2018-12-09', '2018-12-16'],
              dtype='datetime64[ns]', freq='W-SUN')
Run Code Online (Sandbox Code Playgroud)

做一些交叉检查...

dt = pd.date_range("20181101", "20181217", freq='W-SUN')
assert dt.strftime('%A').unique().tolist() == ['Sunday']
Run Code Online (Sandbox Code Playgroud)

您实际上可以将锚点指定为一周中的任何一天,只要指定的偏移量采用 形式"W-<day_of_week>"

在这种情况下,默认实际上是星期日,因此只需使用freq='W'就足够了。

pd.date_range("20181101","20181217", freq='W')
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅关于锚定日期偏移的文档部分。