我有一个数据帧elec2:
Start_Date End_Date
0 2014-05-16 2015-05-18
1 2015-05-19 2018-05-13
2 2016-05-14 2017-05-12
3 2017-05-13 2018-05-16
4 2018-05-17 2019-05-14
预期产出:
Start_Date End_Date Value
0 2014-05-16 2017-05-18 0
1 2015-05-19 2018-05-13 1
2 2016-05-14 2017-05-12 0
3 2017-05-13 2018-05-16 1
4 2018-05-17 2019-05-14 0
如果开始日期从2017年开始,如果2017年介于开始日期和结束日期之间,我想添加1,但如果结束日期是2017年,则为0
我这样做了,它对第一个条件有效,但我不知道如何为其他条件
elec2["Value"]=elec2.apply(lambda x: 1 if (x["Start_Date"].year==2017)
else
0,axis=1)
谢谢你的帮助
首先将列转换为数据帧,按^{} 转换为年,并按^{} 比较相等,按^{} 比较较大,按^{} 比较较小,按^{} 比较不相等:
最后将所有掩码}链接在一起,最后按^{} 或^{} 转换为整数:
m1
和m2
按位OR
(|
)和m3
按位AND
按^与@jezrael的回答略有不同:
或者当
DataFrame
已经是DateTime
对象时:您也可以使用
.astype(int)
而不是*1
我仍然在掌握Python中的诀窍,上面的内容可能可以做得更像Python
相关问题 更多 >
编程相关推荐