[英]Truncate date to last monday or any day of the week in python
给定一个pandas.Series
存储时间戳,例如:
In [14]: x
Out[14]:
0 2015-11-03
1 2015-11-17
2 2015-12-08
3 2015-12-22
4 2016-01-05
dtype: datetime64[ns]
我想截断日期,以便我只有每个时间戳的最后一个星期一
In [14]: x
Out[14]:
0 2015-11-02
1 2015-11-16
2 2015-12-07
3 2015-12-21
4 2016-01-04
dtype: datetime64[ns]
您可以使用dt.dayofweek
属性构造TimedeltaIndex
,因为Monday
是第0天。大于此的任何星期几将导致timedeltas等于要减去的天数:
In [49]:
s = s - pd.TimedeltaIndex(s.dt.dayofweek, unit='D')
s
Out[49]:
index
0 2015-11-02
1 2015-11-16
2 2015-12-07
3 2015-12-21
4 2016-01-04
Name: date, dtype: datetime64[ns]
例如,对于2015-11-05
, 2015-11-04
, 2015-11-03
, 2015-11-02
的输出pd.TimedeltaIndex(s.dt.dayofweek, unit='D')
是3 days
, 2 days
,分别为1 days
, 0 days
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.