我想验证特定列及其数据类型是否存在于给定的Polars DataFrame中.Polars DataFrame可能有额外的列.我知道有Patito个用于极点数据验证.但不幸的是,我找不到一种方法来验证我所需要的列及其数据类型是否存在.对于DataFrame中的其他列,由于多余的列,ValidationError被抬高:

import polars as pl
import patito as pt


class model(pt.Model):
    name: str
    age: int

df = pl.DataFrame(
    {
        "name": ["Peter", "Anna", "Tyler"],
        "age": [29, 18, 49],
        "location": ["Chicago", "Paris", "Singapur"],
    }

model.validate(df) #raises ValidationError due to superflous column "location"

如果使用patito可以做到这一点,我如何用空格和连字符来验证列名,例如"Column 1"或"Column-1"?

Edit 1 以进一步解释补充问题.

import polars as pl
import patito as pt


class model(pt.Model):
    name: str
    column-1: int #won't work since variable names only contain alpha-numeric characters and underscores

df = pl.DataFrame(
    {
        "name": ["Peter", "Anna", "Tyler"],
        "column-1": [29, 18, 49],
        "location": ["Chicago", "Paris", "Singapur"],
    }

model.validate(df) #raises ValidationError due to superflous column "location"

推荐答案

似乎有两个问题.

如何创建包含Python不允许作为类元素的字段的模型

要做到这一点,你可以依靠Field‘S alias参数

你会做的


class model(pt.Model):
    name: str
    column1_or_any_allowable_name: int = pt.Field(alias='column-1')

如何让模型验证忽略额外的列

似乎没有一种直接的方法可以做到这一点,但您可以使用模型属性来处理select个相关列,如下所示

model.validate(df.select(model.schema()['required']))

如果模型中有一个场不是作为df中的一列存在的,那么两极将增加ColumnNotFoundError,这与ValidationError不同,所以如果你使用try,except ValidationError,你必须把except ColumnNotFoundError也包括在内.

Python相关问答推荐

使用setuptools pyproject.toml和自定义目录树构建PyPi包

对所有子图应用相同的轴格式

OR—Tools CP SAT条件约束

Tkinter菜单自发添加额外项目

如何使用OpenGL使球体遵循Python中的八样路径?

Python pint将1/华氏度转换为1/摄氏度°°

使用Python异步地持久跟踪用户输入

判断Python操作:如何从字面上得到所有decorator ?

从一个df列提取单词,分配给另一个列

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

计算机找不到已安装的库'

用fft计算指数复和代替求和来模拟衍射?

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

我怎么才能用拉夫分拣呢?

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?

将多行数据循环到嵌套框架中的单行

盒子图分析

PySpark:使用重置对窗口进行计数

如何在Polars DataFrame中使用`isin‘?