CSV中嵌套JSON字段转换为Pandas DataFrame报错问题求解
解决方案
调整思路如下:
- 给字符串转字典的逻辑增加异常捕获,遇到非法格式的行直接返回空值,不会中断整体解析流程
- 优先使用
json模块处理标准JSON字符串,针对CSV转义的双引号兼容性更好 - 解析完成后统一过滤掉解析失败的无效行,再生成最终的结构化DataFrame
调整后可运行的代码:
import csv import json import pandas as pd # 自定义安全解析JSON的函数,解析失败返回None def safe_parse_json(s): try: return json.loads(s) except: return None # 读取CSV df = pd.read_csv('/Users/David/xaa.csv', sep=',', header=None) # 安全转换第2列(索引1)的JSON字符串 df[1] = df[1].apply(safe_parse_json) # 过滤掉解析失败的行 df_valid = df.dropna(subset=[1]).reset_index(drop=True) # 从JSON部分生成DataFrame,自动匹配字段 df_json = pd.DataFrame(df_valid[1].tolist()) # 如果需要保留原CSV的其他字段(时间、主机IP、Pod名等),可以用concat合并 # df_final = pd.concat([df_valid.drop(columns=[1]), df_json], axis=1) print(df_json.head())
如果需要统计解析失败的行数,直接计算len(df) - len(df_valid)即可,也可以单独把解析失败的行导出排查问题。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

