代码之家  ›  专栏  ›  技术社区  ›  prashant thakre

如何打印索引(行号),以便在json期间进行错误转换。加载熊猫数据帧

  •  0
  • prashant thakre  · 技术社区  · 4 年前

    我使用下面的代码来加载Json,这对于有效的Json字符串很好,但是对于无效的Json字符串,它会抛出错误。

    orgdf['data'].apply(json.loads)
    

    enter image description here

    我只需要知道哪个索引(行号)有一个无效记录。加载错误。

    我知道我可以使用dataframe枚举(for loop)来实现这一点,但我正在寻找一种高效的方法,因为它包含数百万条记录。

    如果有人能在这方面提供帮助,那就太好了。

    0 回复  |  直到 4 年前
        1
  •  2
  •   ozacha    4 年前

    可以创建一个自定义函数,将 json.loads 调用try/except,然后在内部调用此函数 apply .另见 this answer .

    def is_valid_json(s):
        try:
            json.loads(s)
        except (json.JSONDecodeError, ValueError):
            return False
        return True
    
    # Mark valid JSON strings
    valid = orgdf['data'].apply(is_valid_json)
    
    # Extract indices with _invalid_ strings
    invalid_indices = valid[~valid].index