在python中截断日期为星期一或星期几的任何一天

时间:2015-11-03 08:18:05

标签: python numpy pandas

给定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]

1 个答案:

答案 0 :(得分:5)

您可以使用TimedeltaIndex属性构建dt.dayofweek,因为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]

E.g。对于2015-11-052015-11-042015-11-032015-11-02pd.TimedeltaIndex(s.dt.dayofweek, unit='D')的输出为3 days2 days1 days0 days,分别为。