【问题标题】:How do I validate a value in a dataframe which is dependent on other value in that specific row?如何验证依赖于该特定行中其他值的数据框中的值?
【发布时间】:2021-12-20 10:37:29
【问题描述】:

假设我有一个遵循这种格式的 .csv:

姓名、薪水、部门、必填

Rob,5500,航空,是的

鲍勃,1000,设施,否

汤姆,6000,IT,是的

将其导出到 pandas/modin 后,我想执行行区分检查,其中:

  1. 叫 Rob 在航空业工作的人的收入不能低于 5000

  2. 在工厂工作的叫 Bob 的人的收入不能低于 1000

  3. 在设施工作的人必须报告他们的工资,而在航空或 IT 工作的人可以选择不报告他们的工资。

  4. 如果违反任何检查,我们会将其存储在数据框中,并将此案例转交给人力资源部门进行进一步调查。

您将如何使用 Pandera 验证此 .csv?

【问题讨论】:

    标签: pandas pandera


    【解决方案1】:

    根据您使用的 API,您可以查看 wide checks 以获取基于对象的 API,或查看 dataframe checks 以获取基于类的 API。

    注意:下面的代码 sn-ps 未经测试,但应该朝着正确的方向发展

    基于类的 API:

    import pandera as pa
    from pandera.typing as Series
    
    class Schema(pa.SchemaModel):
        Name: Series[str]
        Salary: Series[int]
        Department: Series[str]
        Mandatory: Series[str]
        
        @pa.dataframe_check
        def rob_aviation_check(cls, df) -> Series[bool]:
            return df.loc[df["Name"] == "Rob" & df["Department"] == "Aviation", "Salary"] >= 5000
    

    基于对象的 API:

    schema = DataFrameSchema(
        columns={
            "Name": pa.Column(str),
            "Salary": Pa.Column(int),
            ...
        }
        checks=[
            pa.Check(lambda df: df.loc[df["Name"] == "Rob" & df["Department"] == "Aviation", "Salary"] >= 5000)
        ]
    )
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 2018-10-28
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多