如何基于pandas dataframe中的另一列验证列(可能使用pandas模式),Python 3

如何基于pandas dataframe中的另一列验证列(可能使用pandas模式),Python 3,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框df,有两列price和max\u price。我需要这些验证: max\u price列中的值必须是=>0 price列中的值必须是=>0,但对于price列,也必须是0,但不知道如何检查它是否高于max_price列中的值 import pandas as pd from pandas_schema import Column, Schema from pandas_schema.validation import InRangeValidation df = pd.Dat

我有一个数据框
df
,有两列
price
max\u price
。我需要这些验证:

  • max\u price
    列中的值必须是
    =>0
  • price
    列中的值必须是
    =>0
    ,但对于
    price
    列,也必须是
    0
    ,但不知道如何检查它是否高于
    max_price
    列中的值

    import pandas as pd
    from pandas_schema import Column, Schema
    from pandas_schema.validation import InRangeValidation
    
    
    df = pd.DataFrame({'price': [1, 10, 20], 'max_price': [10, 5, 25]})
    
    schema = Schema([
        Column('price', [InRangeValidation(min=0)]),  # how to check with the column `max_price`?
        Column('max_price', [InRangeValidation(min=0)])
    ])
    
    errors = schema.validate(df)
    
    for error in errors:
        print(error)
    
    这里,
    df
    中的第二行无效,因为
    price
    为10,而
    max\u price
    仅为5


    你能告诉我怎么把代码改正确吗?谢谢。

    谢谢你的回答。您的解决方案以独立的方式检查值。但是你知道如何使用pandas\u模式来解决它吗?因为它更符合我的代码的其余部分。谢谢你的回答。您的解决方案以独立的方式检查值。但是你知道如何使用pandas\u模式来解决它吗?因为它更符合我的代码的其余部分。
    Lst=df['price'].values
    row=0
    for v in df['max_price'].values:
        if(Lst[row]>v):
           print("error at row:",row)
        row=row+1