【发布时间】:2021-02-12 12:03:32
【问题描述】:
我需要创建一个所有周开始日期的列表,作为给定月份开始日期的字符串,其中一周从星期四到星期五。
例如,如果当前日期是 1 月 1 日星期一,我将从 12 月 28 日开始收集 1 月份的一周开始日期。
到目前为止,我的方法成功地获得了给定月份中的每周开始日期,但是,结果是基于一周开始的星期一,而我需要它从上一个星期四开始:
import pandas as pd
from datetime import datetime, timedelta
month_start = '2021-02-01'
month_end = '2021-02-28'
dates = [
d.strftime('%F')
for d in pd.date_range(month_start, month_end)
]
weeks = pd.Series(pd.to_datetime(dates)).apply(
lambda x: (x - timedelta(days=x.dayofweek))).unique()
weeks = [
w.strftime('%F')
for w in pd.to_datetime(weeks)
]
产量
['2021-02-01', '2021-02-08', '2021-02-15', '2021-02-22']
期望的结果:
['2021-01-28', '2021-02-05', '2021-02-11', '2021-02-18', '2021-02-25']
非常感谢
【问题讨论】:
-
您的预期输出看起来不对...并非所有日期都是星期四。
[d.strftime("%F") for d in pd.date_range(dt.date(2021,2,1), dt.date(2021,2,28), freq="W-THU")] -
这只是一个人为的例子,用于演示。
-
好的,那么上面的内容就可以工作了 - 每周星期四频率。无需自己编写代码