[英]My while function is not returning any value ! What am i doing wrong
相當新手!
我有一個看起來像這樣的數據框:
currentMilestone m2 SLA_M6 latedeliverydate SLA_M3 earlypickupdate
m2 2020-02-21 2020-02-18 2020-03-14 2020-02-09 2020-02-08
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08
m1 NaT 2020-03-24 2020-02-14 2020-03-13 2020-03-18
我寫的看起來像這樣:
def flag(data):
while data.currentMilestone== 'm1'is True:
if data.SLA_M6 > data.latedeliverydate:
return 'R'
elif (data.SLA_M3 != data.earlypickupdate) & (data.latedeliverydate <= data.SLA_M6):
return 'A'
elif (data.SLA_M3 == data.earlypickupdate) & (data.latedeliverydate >= data.earlypickupdate):
return 'G'
else:
return None
預期的輸出是:
currentMilestone m2 SLA_M6 latedeliverydate SLA_M3 earlypickupdate flag
m2 2020-02-21 2020-02-18 2020-03-14 2020-02-09 2020-02-08 None
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
m1 NaT 2020-03-24 2020-02-14 2020-03-13 2020-03-18 R
當我運行我的函數時,我沒有任何結果......我的意思是標志不能正常工作。 所有行都設置為無
這里有什么問題?
為此使用numpy.select
,因為apply
效率很低:
import numpy as np
cond1 = data['currentMilestone'] == 'm1'
condlist = [
(data['SLA_M6'] > data['latedeliverydate']) & cond1,
(data['SLA_M3'] != data['earlypickupdate']) & (data['latedeliverydate'] <= data['SLA_M6']) & cond1,
(data['SLA_M3'] == data['earlypickupdate']) & (data['latedeliverydate'] >= data['earlypickupdate']) & cond1
]
choicelist = ['R', 'A', 'G']
data['flag'] = np.select(condlist, choicelist, default=None)
[出去]
currentMilestone m2 SLA_M6 latedeliverydate SLA_M3 earlypickupdate flag
0 m2 2020-02-21 2020-02-18 2020-03-14 2020-02-09 2020-02-08 None
1 m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
2 m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
3 m2 2020-02-21 2020-02-18 2020-02-14 2020-02-09 2020-02-08 None
4 m1 NaT 2020-03-24 2020-02-14 2020-03-13 2020-03-18 R
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.