我有一个熊猫日期栏,我想返回上一个星期四的日期(可以是一周中的任何一天)。我使用pd.offsets.Week,但是当年份更改并且Week重新开始时,我没有得到预期的结果。这是我的数据框为“ d”:
raw date Thursday week_start 0 2019-01-03 2018-12-27 2018-12-27 1 2019-01-03 2018-12-27 2018-12-27 2 2019-01-03 2018-12-27 2018-12-27 3 2019-01-02 2018-12-27 2018-12-27 4 2019-01-02 2018-12-27 2018-12-27 5 2019-01-02 2018-12-27 2018-12-27 6 2019-01-03 2019-01-03 2018-12-27 7 2019-01-03 2019-01-03 2018-12-27 8 2019-01-03 2019-01-03 2018-12-27 9 2019-01-03 2019-01-03 2018-12-27 10 2019-01-02 2018-12-27 2018-12-27 11 2019-01-02 2018-12-27 2018-12-27 12 2019-01-02 2018-12-27 2018-12-27
d['week_start'] = d['raw date'] - pd.offsets.Week(weekday=3)
我预计d ['week_start'] = 1/3/2019返回1/3/2019,而不是12/27/2018。我怀疑是因为1/3/2019的Week为0,所以它返回了该周的星期四。无论年份如何变化,如何获取上一个星期四的日期?
您只能将Series.where
withSeries.dt.weekday
用于更改,而不能用于以下Thursday
值:
rng = pd.date_range('2019-01-03', periods=20)
d = pd.DataFrame({'raw date': rng})
mask = d['raw date'].dt.weekday == 3
d['week_start'] = d['raw date'].where(mask, d['raw date'] - pd.offsets.Week(weekday=3))
print(d)
raw date week_start
0 2019-01-03 2019-01-03
1 2019-01-04 2019-01-03
2 2019-01-05 2019-01-03
3 2019-01-06 2019-01-03
4 2019-01-07 2019-01-03
5 2019-01-08 2019-01-03
6 2019-01-09 2019-01-03
7 2019-01-10 2019-01-10
8 2019-01-11 2019-01-10
9 2019-01-12 2019-01-10
10 2019-01-13 2019-01-10
11 2019-01-14 2019-01-10
12 2019-01-15 2019-01-10
13 2019-01-16 2019-01-10
14 2019-01-17 2019-01-17
15 2019-01-18 2019-01-17
16 2019-01-19 2019-01-17
17 2019-01-20 2019-01-17
18 2019-01-21 2019-01-17
19 2019-01-22 2019-01-17
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句