我正在编写一个Python脚本,使用Pandera库验证Pandas DataFrame中的列。我遇到的问题是,我可以逐列进行验证,但未能找到如何在验证某一列的值时,考虑数据框中另一列的值的方法。
具体来说,我想检查一列中是否存在某些值,如果存在,我还想检查该行另一列的值是否包含特定文本。
import numpy as np
import pandas as pd
import pandera as pa
dataframe = pd.DataFrame({'column_A': ['ABC company', 'BBB company', 'ABC company', 'CCC company'],
'column_B': ['1000', np.nan, '2000', np.nan]
})
schema = pa.DataFrameSchema(
columns={
'column_A': pa.Column(pa.String),
'column_B': pa.Column(pa.String, nullable=True,
checks=pa.Check(
lambda df: (df['column_A'].str.contains('ABC')) & (~df['column_B'].isna()))
)
}
)
schema.validate(dataframe)
这是我尝试解决此问题的方法,但Pandera并不知道在验证'column_B'列时,我需要同时查看多个序列(series)。