如何提取pandas DataFrame中JSON格式列内的name字段值
解决方法
你之前用字符串截取的方式不可靠:lstrip/rstrip是按单个字符匹配删除,不是匹配固定字符串后缀/前缀,很容易出现截断错误,不适合处理JSON格式数据。
最优方案是先把JSON字符串转为Python字典,再直接取name字段的值,实现代码如下:
基础实现(无异常兼容)
首先导入依赖库:
import pandas as pd import ast
处理数据并生成目标DataFrame:
# 把JSON字符串转为字典后提取name字段,重命名为code df['code'] = df['details'].apply(lambda x: ast.literal_eval(x)['name']) # 仅保留code列 df_res = df[['code']]
兼容异常版本(适配格式错误的行)
如果部分行的JSON格式可能不合法,可以加异常处理避免程序报错:
def extract_name(json_str): try: json_dict = ast.literal_eval(json_str) return json_dict.get('name', '') # 字段不存在时返回空字符串 except: return '' # 格式错误时返回空字符串 df['code'] = df['details'].apply(extract_name) df_res = df[['code']]
输出结果
最终得到的df_res格式如下:
code 0 abc123 1 abc456
内容的提问来源于stack exchange,提问作者ApacheOne
相关产品推荐
相关产品推荐

