在熊猫数据框中创建和验证JSON太慢

时间:2019-08-12 08:31:58

标签: python json pandas

我正在尝试将数据帧转换为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是最关注的区域。

0 个答案:

没有答案