【发布时间】:2021-02-01 21:22:19
【问题描述】:
我有以下数据框:
Frequency Date 1 Date 2 Date 3
1 2020/04/20 2021/03/04 2020/03/04
1 2020/04/20 2021/03/04 0
1 2020/04/20 2021/03/04 0
2 2020/05/26 2021/08/04 2020/08/04
2 2020/05/26 2021/08/04 0
2 2020/05/26 2021/08/04 0
我想添加月份,但以数字列为条件:因此: 如果列号为 1,则添加 12 个月。 如果列号为 2,则添加 6 个月。 如果列号为 3,则添加 4 个月。
在 Data3 列的 0 行中,如果频率列对应于 1,我需要在上一行的日期上添加一年。如果频率行是 2,则添加 6 个月。在不更改值的情况下已分配给 Data3 列(不同于 0)
Frequency Date 1 Date 2 Date 3
1 2020/04/20 2021/03/04 2020/03/04
1 2020/04/20 2021/03/04 2021/03/04
1 2020/04/20 2021/03/04 2022/03/04
2 2020/05/26 2021/08/04 2020/08/04
2 2020/05/26 2021/08/04 2021/02/04
2 2020/05/26 2021/08/04 2021/10/04
我尝试了以下方法:
df['Date 3']=df.apply(lambda x:datetime(x['Date 1'].year+x['Frequency']-1,x['Date 2'].month,x['Date 2'].day),axis=1)
但并不涵盖所有情况
【问题讨论】:
-
你要把它们加到什么地方?描述并没有明确说明你要实现什么逻辑。
-
在Data3列为0的行中,如果频率列对应1,我需要在上一行的日期上加一年。如果频率行是2,则加6个月。不更改已经分配给 Data3 列的值(不同于 0)
-
这是一个很好的解释!您应该使用该评论更新问题,以帮助人们更好地理解。
标签: python pandas dataframe date