给定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]
答案 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-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
,分别为。