代码之家  ›  专栏  ›  技术社区  ›  hr02

在数据帧上执行验证(表达式)

  •  1
  • hr02  · 技术社区  · 6 年前

    我有一个包含两列的数据框df

    Sub_marks Total_marks
    40         90
    60         80
    100        90
    0           0
    

    我需要找出哪些行不符合sub_marks<=Total_marks的条件。 目前我使用的sympy函数如下

    def fn_validate(formula,**args):
        exp=sy.sympify(formula)
        exp=exp.subs(args)
        return exp
    

    我使用下面的apply方法调用上面的函数

    df['val_check']=df.apply(lambda row:fn_validate('X<=Y',X=row['Sub_marks],Y=row['Total_marks']),axis=1)
    
    

    我希望列valu检查的表达式验证结果为True/False。但如果值为0,则会出现错误。

    Invalid Nan Comparison
    

    我无法从数据框中删除此值 请告诉我,有没有其他方法来验证这个表达式

    2 回复  |  直到 6 年前
        1
  •  0
  •   oppressionslayer    6 年前

    你可以试试这个:

    df['val_check'] = df.Sub_marks <= df.Total_marks                                                                                                                                    
    
     df                                                                                                                                                                                  
    
       Sub_marks  Total_marks  val_check
    0         40           90       True
    1         60           80       True
    2        100           90      False
    3          0            0       True
    
        2
  •  0
  •   Strange    6 年前

    可以直接比较列并将其存储在列表中。

    condition = df['sub_marks']>=df['total_marks']
    
    print(condition)
    

    输出:

    [True,True,False,True]
    
    推荐文章