Код: Выделить всё
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]
})
# define your dataframe level test
check_AB = pa.Check(
lambda df: (df['column_A'].str.contains('ABC')) & (~df['column_B'].isna()),
name='check_AB'
)
schema = pa.DataFrameSchema(
columns={
'column_A': pa.Column(pa.String),
'column_B': pa.Column(pa.String, nullable=True)
},
checks=check_AB # = 7),
name='check_AB'
)
Мы можем видеть это в самой объекте ошибки (см.
Код: Выделить всё
try: schema.validate(dataframe, lazy=True)
except pa.errors.SchemaErrors as e: e2 = e; print(e2.failure_cases)
Наконец, если все случаи сбоя являются NANS, Pandera не дает ошибки валидации:
Код: Выделить всё
dataframe = pd.DataFrame({'column_A': ['ABC company', np.nan, 'ABC company', np.nan],
'column_B': [1000, np.NaN, 2000, np.nan]
})
# define your dataframe level test
check_AB = pa.Check(
lambda df: (df['column_A'].str.contains('ABC')) & (df['column_B'] >= 7),
name='check_AB'
)
schema = pa.DataFrameSchema(
columns={
'column_A': pa.Column(pa.String, nullable=True),
'column_B': pa.Column(pa.Float, nullable=True)
},
checks=check_AB #
Подробнее здесь: [url]https://stackoverflow.com/questions/79663583/pandera-validation-behavior-for-nan-failure-cases[/url]