You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSON Schema在Scala中验证DataFrame结构

用JSON Schema验证Pandas DataFrame结构的方案

没问题,我来帮你实现用给定的JSON Schema验证DataFrame结构的需求!下面是具体的步骤和代码示例:

1. 准备依赖库

首先确保你安装了pandas和jsonschema这两个库,如果没装的话,用下面的命令安装:

pip install pandas jsonschema

2. 编写验证代码

我们会把DataFrame的每一行转换成字典,然后用jsonschema库的validate函数逐一验证:

import pandas as pd
from jsonschema import validate, ValidationError

# 构造你的DataFrame
data = {
    "id": ["5e5db036e0403b1a"],
    "migration": ["mig"],
    "number": [1],
    "string": ["str"]
}
df = pd.DataFrame(data)

# 定义修正后的JSON Schema(后面会说明修正原因)
schema = {
  "title": "Section",
  "type": "object",
  "additionalProperties": false,
  "required": ["migration", "id"],
  "properties": {
    "id": {
      "type": "string"  # 新增id的类型定义,否则会违反additionalProperties规则
    },
    "migration": {
      "type": "string"
    },
    "string": {
      "type": "string"
    },
    "number": {
      "type": "number",
      "min": 0
    }
  }
}

# 遍历每一行进行验证
for idx, row in df.iterrows():
    row_dict = row.to_dict()
    try:
        validate(instance=row_dict, schema=schema)
        print(f"第{idx+1}行数据完全符合Schema要求 ✅")
    except ValidationError as err:
        print(f"第{idx+1}行数据不符合Schema要求 ❌: {err.message}")

3. 关键细节说明

  • 关于Schema的修正:你原来的Schema里additionalProperties设为false,意味着数据中不能出现Schema的properties里未定义的字段,但required里又包含了id,却没在properties里定义它的类型。这会导致验证失败,所以我给id补充了类型定义(根据你的DataFrame数据设为string)。如果你不需要严格限制额外字段,可以把additionalProperties改为true或者直接删除这个配置。
  • 验证逻辑:我们遍历DataFrame的每一行,把行数据转成字典后传入validate函数,它会自动对照Schema的规则(必填字段、数据类型、数值范围等)进行检查。
  • 错误处理:如果某一行不符合规则,ValidationError会返回具体的错误信息,帮你快速定位问题。

测试结果

运行上面的代码,你的测试数据会输出:

第1行数据完全符合Schema要求 ✅

如果修改数据(比如把number改成-1,或者删掉migration字段),就会触发错误提示,比如:

第1行数据不符合Schema要求 ❌: -1 is less than the minimum of 0

内容的提问来源于stack exchange,提问作者abarriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 14:27:49