为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫映射到下周的星期一

熊猫映射到下周的星期一

慕莱坞森 2021-11-09 16:30:25
是否有一种规范/简单的方法可以将日期/日期列表映射到熊猫各自的下周一?例如,给定一个 7 天的列表,返回一个 7 天的列表,其中周一保持不变,周二至周日映射到下周一
查看完整描述

3 回答

?
POPMUISE

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 表示星期二),也可以减去以获得上一个星期一。


查看完整回答
反对 回复 2021-11-09
?
12345678_0001

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]


查看完整回答
反对 回复 2021-11-09
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

可能有更好的方法来执行此操作,但是查看Timestamps 的文档,您似乎可以执行以下操作

my_timestamp += datetime.timedelta(days=(7 - my_timestamp.weekday())%7)


查看完整回答
反对 回复 2021-11-09
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信