熊猫映射到下周的星期一

是否有一种规范/简单的方法可以将日期/日期列表映射到熊猫各自的下周一?例如,给定一个 7 天的列表,返回一个 7 天的列表,其中周一保持不变,周二至周日映射到下周一


慕莱坞森
浏览 199回答 3
3回答

POPMUISE

您可以使用周偏移量: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 表示星期二),也可以减去以获得上一个星期一。

12345678_0001

使用np.where与weekdays=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))s0   2019-02-111   2019-02-182   2019-02-183   2019-02-184   2019-02-185   2019-02-186   2019-02-18dtype: datetime64[ns]

海绵宝宝撒

可能有更好的方法来执行此操作,但是查看Timestamps 的文档,您似乎可以执行以下操作my_timestamp += datetime.timedelta(days=(7 - my_timestamp.weekday())%7)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python