如何对DataFrame中存储JSON响应的列使用eval函数完成解析
解析DataFrame JSON列的方案
报错核心原因
- JSON标准语法中的
null、true、false和Python原生的None、True、False命名不匹配,eval默认无法识别 - 列中可能存在空值、格式损坏的字符串,直接转换会触发语法异常
- 原生eval未做权限限制,也没有JSON适配逻辑,极易报错
正确使用eval的实现代码
补充JSON标识符映射和异常捕获,同时限制执行权限避免安全风险:
import pandas as pd def safe_eval_convert(x): # 过滤空值 if pd.isna(x): return None try: # 映射JSON关键字到Python原生值,同时禁用内置函数避免安全问题 return eval( str(x), {"__builtins__": None}, {"null": None, "true": True, "false": False} ) except: # 异常值返回空,可根据需求调整为返回原字符串 return None df['account_Segments'] = df['account_Segments'].apply(safe_eval_convert)
更推荐的替代方案(无需eval)
处理JSON字符串优先使用Python内置的json模块,兼容性更高且无安全隐患:
import json import pandas as pd def json_convert(x): if pd.isna(x): return None try: return json.loads(str(x)) except json.JSONDecodeError: return None df['account_Segments'] = df['account_Segments'].apply(json_convert)
内容的提问来源于stack exchange,提问作者Ak Suhail
相关产品推荐
相关产品推荐

