我有一个数据帧,主要是日期。我想在这里做什么
从旧日期变量(DTDate)中,我想创建一个新的日期变量,如果旧日期是星期一,新日期将相同,但如果旧日期是星期一以外的任何日期,新日期将给我下一个星期一的日期。最后,新日期中的所有项目都只有星期一。在
我一直在尝试一个函数和应用程序。这是我的数据集和代码
Date call DTDate weekday weekdayNo
0 31/12/2014 2014-12-31 Wednesday 3
1 29/10/2014 2014-10-29 Wednesday 3
2 28/10/2014 2014-10-28 Tuesday 2
3 27/3/2015 2015-03-27 Friday 5
4 27/2/2015 2015-02-27 Friday 5
5 27/11/2014 2014-11-27 Thursday 4
6 27/10/2014 2014-10-27 Monday 1
7 26/3/2015 2015-03-26 Thursday 4
8 26/2/2015 2015-02-26 Thursday 4
9 26/12/2014 2014-12-26 Friday 5
10 26/11/2014 2014-11-26 Wednesday 3
11 26/10/2014 2014-10-26 Sunday 0
12 25/3/2015 2015-03-25 Wednesday 3
13 25/12/2014 2014-12-25 Thursday 4
14 24/3/2015 2015-03-24 Tuesday 2
15 24/2/2015 2015-02-24 Tuesday 2
16 24/12/2014 2014-12-24 Wednesday 3
17 24/11/2014 2014-11-24 Monday 1
18 23/3/2015 2015-03-23 Monday 1
代码是
^{pr2}$我得到的是,这是完全一样的事情,没有改变
Date call DTDate weekday weekdayNo newDate
0 31/12/2014 2014-12-31 Wednesday 3 2014-12-31
1 29/10/2014 2014-10-29 Wednesday 3 2014-10-29
2 28/10/2014 2014-10-28 Tuesday 2 2014-10-28
3 27/3/2015 2015-03-27 Friday 5 2015-03-27
4 27/2/2015 2015-02-27 Friday 5 2015-02-27
5 27/11/2014 2014-11-27 Thursday 4 2014-11-27
6 27/10/2014 2014-10-27 Monday 1 2014-10-27
7 26/3/2015 2015-03-26 Thursday 4 2015-03-26
8 26/2/2015 2015-02-26 Thursday 4 2015-02-26
9 26/12/2014 2014-12-26 Friday 5 2014-12-26
10 26/11/2014 2014-11-26 Wednesday 3 2014-11-26
11 26/10/2014 2014-10-26 Sunday 0 2014-10-26
12 25/3/2015 2015-03-25 Wednesday 3 2015-03-25
13 25/12/2014 2014-12-25 Thursday 4 2014-12-25
14 24/3/2015 2015-03-24 Tuesday 2 2015-03-24
15 24/2/2015 2015-02-24 Tuesday 2 2015-02-24
16 24/12/2014 2014-12-24 Wednesday 3 2014-12-24
17 24/11/2014 2014-11-24 Monday 1 2014-11-24
18 23/3/2015 2015-03-23 Monday 1 2015-03-23
我也觉得,这个主意不好,如果有更好的,请大家提出建议,那可能是什么??提前谢谢
您不需要
import datetime
或timedelta
来执行此操作。在
^{pr2}$x.weekday()
提取星期一=0,星期日=6的一天。在产量:
AddDate
函数可以简化,只需一条直线这里,lambda函数
lambda x: x + timedelta(days=7-x.dayofweek) if x.dayofweek else x
如果不是星期一,则添加delta=
7-x.dayofweek
天。在要验证新的
^{pr2}$weekday
,让我们创建一个新列newdayofweek
注:星期一=0,星期日=6的星期几
这里有一种更有效的方法。在
这实际上是在python空间中循环。在
^{pr2}$在这里,我们正在构造一个TimedeltaIndex来添加。
.where
是if-then
的等效成语,但这是一个矢量化表达式。在相关问题 更多 >
编程相关推荐