如何高效解析Pandas中存储嵌套JSON字符串的列?
高效解析Pandas DataFrame中嵌套JSON字符串为独立列的方法
针对你提供的包含嵌套JSON字符串的DataFrame,这里有一个高效且简洁的解决方案,利用Pandas原生工具来处理:
步骤1:准备工作
首先确保导入所需库:
import pandas as pd import json
步骤2:解析JSON字符串并展开为列
Pandas的pd.json_normalize()是专门为处理嵌套JSON设计的高效工具,搭配json.loads()将字符串转为字典后,就能快速展开所有层级的键为独立列:
# 先将data列的JSON字符串转换为Python字典对象 df['data'] = df['data'].apply(json.loads) # 使用json_normalize解析嵌套结构,自动展开嵌套键 parsed_json_df = pd.json_normalize(df['data']) # 将原DataFrame(去掉data列)和解析后的DF合并 final_df = pd.concat([df.drop('data', axis=1), parsed_json_df], axis=1)
处理不合法的JSON字符串
如果你的data列存在截断或格式错误的JSON(比如示例中第二个条目末尾的use...),可以添加一个安全解析函数来避免报错:
def safe_parse_json(s): try: return json.loads(s) except json.JSONDecodeError: # 这里可以根据需求返回空字典、NaN或其他默认值 return {} df['data'] = df['data'].apply(safe_parse_json)
为什么这个方法高效?
pd.json_normalize()是Pandas底层优化的函数,比手动循环解析字典要快得多,尤其适合大规模数据集- 自动处理嵌套层级,生成的列名用点分隔(比如
account_data.currency.current),清晰反映原JSON的结构 - 与原DataFrame的合并操作也是Pandas原生的高效操作,避免额外的性能开销
最终结果示例
处理后的final_df会包含原有的bank_account列,加上解析后的uid、account_type、user_name、account_data.currency.current等所有嵌套列。
内容的提问来源于stack exchange,提问作者Alexander Engelhardt
相关产品推荐
相关产品推荐

