3 回答
TA贡献1765条经验 获得超5个赞
您可以使用周偏移量:
In [11]: days = pd.date_range('2019-01-01', '2019-01-31')
In [12]: days + pd.offsets.Week(weekday=0)
Out[12]:
DatetimeIndex(['2019-01-07', '2019-01-07', '2019-01-07', '2019-01-07',
'2019-01-07', '2019-01-07', '2019-01-14', '2019-01-14',
'2019-01-14', '2019-01-14', '2019-01-14', '2019-01-14',
'2019-01-14', '2019-01-21', '2019-01-21', '2019-01-21',
'2019-01-21', '2019-01-21', '2019-01-21', '2019-01-21',
'2019-01-28', '2019-01-28', '2019-01-28', '2019-01-28',
'2019-01-28', '2019-01-28', '2019-01-28', '2019-02-04',
'2019-02-04', '2019-02-04', '2019-02-04'],
dtype='datetime64[ns]', freq=None)
修复星期一:
In [13]: days + pd.offsets.Week(weekday=0, n=0)
Out[13]:
DatetimeIndex(['2019-01-07', '2019-01-07', '2019-01-07', '2019-01-07',
'2019-01-07', '2019-01-07', '2019-01-07', '2019-01-14',
'2019-01-14', '2019-01-14', '2019-01-14', '2019-01-14',
'2019-01-14', '2019-01-14', '2019-01-21', '2019-01-21',
'2019-01-21', '2019-01-21', '2019-01-21', '2019-01-21',
'2019-01-21', '2019-01-28', '2019-01-28', '2019-01-28',
'2019-01-28', '2019-01-28', '2019-01-28', '2019-01-28',
'2019-02-04', '2019-02-04', '2019-02-04'],
dtype='datetime64[ns]', freq=None)
注意:您可以为不同的工作日使用不同的数字(例如 2 表示星期二),也可以减去以获得上一个星期一。
TA贡献1802条经验 获得超5个赞
使用np.where与weekday
s=pd.Series(pd.date_range(start='2019-02-11',periods=7))
s=pd.Series(np.where(s.dt.weekday!=0,s+pd.to_timedelta(7-s.dt.weekday,'D'),s))
s
0 2019-02-11
1 2019-02-18
2 2019-02-18
3 2019-02-18
4 2019-02-18
5 2019-02-18
6 2019-02-18
dtype: datetime64[ns]
TA贡献1809条经验 获得超8个赞
可能有更好的方法来执行此操作,但是查看Timestamps 的文档,您似乎可以执行以下操作
my_timestamp += datetime.timedelta(days=(7 - my_timestamp.weekday())%7)
添加回答
举报