如何基于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