Pandera 验证获取所有有效行

Pra*_*hra 6 python pandas data-science pandera

我正在尝试使用 pandera 库(我对此非常陌生)进行 pandas 数据帧验证。我想要做的是忽略根据架构无效的行。我怎样才能做到这一点?

例如:pandera 模式如下所示:

import pandera as pa
import pandas as pd

schema: pa.DataFrameSchema = pa.DataFrameSchema(columns={
  'Col1': pa.Column(str),
  'Col2': pa.Column(float, checks=pa.Check(lambda x: (0 <= x <= 1)), nullable=True),
})

df: pd.DataFrame = pd.DataFrame({
    "Col1": ["1", "2", "3", nan],
    "Col2": [0.3, 0.4, 5, 0.2],
})
Run Code Online (Sandbox Code Playgroud)

我想要做的是,当我应用验证时,df我得到一个结果:

   Col1  Col2
0     1   0.3
1     2   0.4
Run Code Online (Sandbox Code Playgroud)

其他有错误的行被删除。

Cod*_*ent 0

这是我第一次听说 Pandera,但它看起来像一个很酷的图书馆。经过一番挖掘后,您可以捕获验证错误并过滤掉失败索引:

fail_index = []
try:
    schema.validate(df)
except pa.errors.SchemaError as ex:
    fail_index = ex.failure_cases['index']

clean_df = df[~df.index.isin(fail_index)]
Run Code Online (Sandbox Code Playgroud)

有关文档SchemaErrorhttps://pandera.readthedocs.io/en/stable/reference/ generated/pandera.errors.SchemaError.html#pandera.errors.SchemaError