如何使用逻辑运算符在熊猫条件中使用

时间:2019-06-28 05:54:31

标签: python-3.x pandas numpy

我有数据框

Software Product      Case Number    Created date   End date    CS date 
MDM9607.LE.1.0      2774904     2/3/2017                   3/4/2019
MDM9607.LE.1.0      2774203     8/7/2017       3/9/2018    7/8/2016
MDM9607.LE.1.0      2768088     9/3/2018                   1/2/2019 
MDM9607.LE.1.0      2767500     10/10/2016      3/4/2017   3/2/2015
MDM9607.LE.1.0      2764617     11/12/2017      8/5/2018   4/5/2016

我在这里使用两个条件

if f9 f9['Created date'] < f9['End date']
    f9['Status'] = np.select([ m2], ['EOL']) 

if f9['Created date'] > f9['End date']
    f9['Num of days'] = (f9['Created date'] - f9['CS date']).dt.days
    m1 = f9['Num of days'].isna()
    m2 = f9['Num of days'] > 365
    m3 = f9['Num of days'] < 365
    f9['Status'] = np.select([m1, m2, m3], ['U','L', 'N']

Software Product  Case Number    Created date   End date    CS date   Sta
MDM9607.LE.1.0      2774904     2/3/2017                   3/4/2019   L
MDM9607.LE.1.0      2774203     8/7/2017       3/9/2017    7/8/2016   Y
MDM9607.LE.1.0      2768088     9/3/2018                   1/2/2019   NMDM9607.LE.1.0      2767500     10/10/2016     3/4/2017   3/2/2015   L
MDM9607.LE.1.0      2764617     11/12/2017      8/5/2018   4/5/2016   N

我使用了上面的代码,但是得到了

File "<ipython-input-134-3943efb08731>", line 1
                    if SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:0)

您可以这样做

将比较结果存储在一个变量中,例如:

data=f9["Created Date"]>f9["End Date"]

这将返回一个布尔值列表。使用它可以得到满足此条件的相关事件行,并继续进行操作。

new_rows=f9[data]

或者您可以对数据框使用.iterrows()方法并遍历所有记录,并分别验证所有记录的if条件

for index,item in f9.iterrows(): 
    if item["Created Date"]>item["End Date"]:
       #Perform your operation

我还建议您将以上各列解析为日期。