我正在尝试将数据帧转换为json并使用架构进行验证。以下代码可以正常工作,但对于500000条记录来说太慢了。需要一些帮助/建议/不同的方法,可以为数据帧中的所有数据创建json并进行验证。
data.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "XXX",
"type": "object",
"additionalProperties": false,
"properties": {
"Type": {
"type": "string",
"enum": [
"A",
"B",
"C",
"D"
]
},
"id": {
"type": "number"
},
"name": {
"type": "string",
"maxLength": 64
},
"role": {
"type": "string"
}
},
"required": [
"Type",
"id",
"name"
]
}
第1步-加载验证器
with open('data.json') as json_file:
jschema = json.load(json_file)
第2步-验证功能,使用jschema验证json字符串并返回成功或错误消息。
def validate(jd):
try:
jsonschema.validate(json.loads(jd), jschema)
return 'SUCCESS'
except jsonschema.ValidationError as e:
return str(e.message)
第3步,将非空列转换为json字符串。 df是具有15列和500000行的dataFrame
json_df = df.T.apply(lambda row: row[~row.isnull()].to_json())
json_df.columns=["json"]
第4步:调用Validate函数。此步骤比步骤3慢得多。
json_df['status']=json_df.apply(lambda
row:validate(jd=row['json']),axis=1)
关于如何优化步骤3和4的任何建议?步骤4是最关注的区域。