【发布时间】:2015-05-23 12:02:13
【问题描述】:
我有一个数据框,主要是日期。这是我想做的事
从旧日期变量(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
代码是
from datetime import date, timedelta
def AddDate(row):
if row['weekdayNo']==0:
return row['DTDate'] + timedelta(days=1)
elif row['weekdayNo'] ==2:
return row['DTDate'] + timedelta(days=6)
elif row['weekdayNo'] ==3:
return row['DTDate'] + timedelta(days=5)
elif row['weekdayNo'] ==4:
return row['DTDate'] + timedelta(days=4)
elif row['weekdayNo'] ==5:
return row['DTDate'] + timedelta(days=3)
elif row['weekdayNo'] ==6:
return row['DTDate'] + timedelta(days=2)
else:
return row['DTDate']
DF['newDate'] = DF.apply(AddDate, axis=1)
我得到以下内容,完全一样,没有任何改变
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
我也觉得,这个想法不好,如果有更好的,请问有谁愿意建议,可能是什么?提前致谢
【问题讨论】:
-
是
DF.DTDatedtypedatetime?转换成datetimedf.DTDate = pd.to_datetime(DF.DTDate)后可以试试吗?