如何将Pandas DataFrame字符串列转换为可解析的JSON或字典类型?
Pandas 字符串格式类JSON列转换方案
错误原因
你的代码触发报错的核心问题是:仅筛选非空行做转换后直接赋值给全列,空值行未做兼容处理,同时直接使用eval方法存在执行任意恶意代码的极高安全风险,不适用于生产环境。
兼容空值的转换方案
推荐使用Python标准库ast的literal_eval方法,该方法仅会解析Python合法字面量结构(字典、列表、字符串等),不会执行任意代码,完全适配你当前单引号包裹的类JSON字符串场景,同时天然兼容空值:
import ast import pandas as pd import numpy as np # 自定义转换函数 def parse_dict_str(x): # 空值直接返回原值,不做处理 if pd.isna(x): return x # 非空字符串解析为字典 return ast.literal_eval(x) # 对整列做转换 df['json_col'] = df['json_col'].apply(parse_dict_str)
转换完成后json_col非空行均为标准Python字典类型,可直接读取字段,比如:
# 读取第一行value下的Code字段 print(df.loc[0, 'json_col']['value']['Code']) # 输出结果:06037
快速提取指定字段示例
如果你不需要保留完整字典,只想提取指定字段,可以直接在转换时取值:
# 直接提取value下的Code字段,空值自动保留 df['code'] = df['json_col'].apply(lambda x: x['value']['Code'] if pd.notna(x) else x)
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

