我正在写一个Python脚本来使用Pandera库验证Pandas DataFrame中的列。我的问题是,我可以一次验证一列,但我无法找到如何在考虑到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没有意识到我想在列B的验证过程中检查多个系列。
2条答案
按热度按时间qnakjoqk1#
如果你想在框架级别进行检查(在文档中查找 # define a wide DataFrame-level check),你需要在列之外进行测试:
字符串
输出量:
型
prdp8dxp2#
IIUC,您需要调整布尔掩码并隔离检查以避免
KeyError
:字符串
输出量:
型
现在,如果我们将
column_A
的第一个值设置为"A_BC"
,则检查失败:型