如何从Dataframe的嵌套字典列表中提取'id'字段值?
提取DataFrame中JSON字符串的id字段
假设你的DataFrame是单列结构,每个单元格内容是带HTML转义字符(")的JSON字符串,以下是两种可行的提取方案:
方法1:逐行解析提取
先处理字符串中的转义字符,再解析为JSON对象并提取目标字段:
import pandas as pd import json # 初始化你的DataFrame df = pd.DataFrame({ 'json_content': [ '{"data":{"attributes":{"title":"Contract 1","AnnualValue":0},"id":1,"type":"contract"}}', '{"data":{"attributes":{"title":"Contract 2","AnnualValue":0},"id":2,"type":"contract"}}', '{"data":{"attributes":{"title":"Contract 3","AnnualValue":0},"id":3,"type":"contract"}}' ] }) # 替换转义引号并提取id df['id'] = df['json_content'].apply( lambda x: json.loads(x.replace('"', '"'))['data']['id'] ) # 查看结果 print(df['id'])
输出结果:
0 1 1 2 2 3 Name: id, dtype: int64
方法2:批量解析(适合大数据量)
用json_normalize批量展开JSON结构,效率更高:
import pandas as pd import json # 先将所有字符串转为字典列表 dict_list = [json.loads(x.replace('"', '"')) for x in df['json_content']] # 批量解析并提取id字段 result = pd.json_normalize(dict_list)['data.id'] print(result)
常见问题排查
- 若解析报错,先检查字符串是否存在多余转义或特殊字符,可先用
x.strip()清理字符串两端空白 - 确保所有JSON字符串结构统一,均包含
data.id层级,避免出现KeyError
内容的提问来源于stack exchange,提问作者PaulyboyUK
相关产品推荐
相关产品推荐

