簡體   English   中英

我的 while 函數沒有返回任何值! 我究竟做錯了什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM