如何将存储序列化JSON的pandas Series转换为字典类型Series
报错原因
你逐行通过iloc给Series元素赋值字典时,pandas会默认将传入的字典识别为待对齐的Series结构,尝试匹配不存在的列轴(Series仅支持行轴axis=0,axis=1是DataFrame专属的列轴),最终触发No axis named 1的报错。这类场景不要使用逐行原地赋值的写法。
修复方案
方案1:向量化批量转换(推荐)
直接用apply方法对整列做批量转换,代码最简洁、执行效率最高,不会触发赋值对齐问题:
import json # 整列批量将JSON字符串转为字典 df['A'] = df['A'].apply(json.loads)
方案2:循环预生成结果后一次性赋值
如果习惯写循环逻辑,不要在循环内逐行修改DataFrame/Series的值,先把所有转换结果存在普通列表里,循环结束后一次性赋值回列:
import json parsed_result = [] for json_str in df['A']: parsed_result.append(json.loads(json_str)) df['A'] = parsed_result
异常兼容处理
如果列中存在格式损坏的非法JSON字符串,可以加一层异常捕获,避免单行解析失败中断整个任务:
import json def safe_json_parse(s): try: return json.loads(s) except json.JSONDecodeError: # 解析失败时可按需返回空字典、None等默认值 return None df['A'] = df['A'].apply(safe_json_parse)
内容的提问来源于stack exchange,提问作者John Mantios
相关产品推荐
相关产品推荐

