如何将DataFrame中的JSON格式列转换为Pandas列?
优化JSON格式列转Pandas独立列的实现
问题背景
现有如下Pandas DataFrame(仅持有df_sample,无原始字典d):
import pandas as pd df_sample = pd.DataFrame( data={'parameters': [ {'Year': '2018', 'Median Age': 'nan', 'Total Non-Family Household Income': 289.0, 'Total Household Income': 719.0, 'Gini Index of Income Inequality': 0.4121} ]} )
需要将parameters列中的字典内容拆分为独立列,替代原有的非Pythonic实现。
更Pythonic的实现方案
方案1:使用pd.json_normalize(推荐)
json_normalize是Pandas专门为嵌套字典/JSON结构设计的工具,直接处理列中的字典序列,代码简洁高效:
# 提取parameters列的字典数据,生成扩展后的DataFrame expanded_df = pd.json_normalize(df_sample['parameters']) # 合并原DataFrame(删除原parameters列)与扩展结果 result_df = df_sample.drop('parameters', axis=1).join(expanded_df)
方案2:使用Series.apply(pd.Series)
如果数据无多层嵌套结构,也可以直接将列中的字典转为Series,自动拆分为多列:
# 将parameters列的字典批量转为多列 expanded_df = df_sample['parameters'].apply(pd.Series) # 合并并清理原列 result_df = df_sample.drop('parameters', axis=1).join(expanded_df)
为什么比原实现更优
- 无需依赖
json库做来回序列化/反序列化操作,减少冗余步骤 - 代码逻辑更直观,完全贴合Pandas原生API设计习惯
- 处理大规模数据时性能更优,原生Pandas方法比手动循环+JSON转换效率更高
内容的提问来源于stack exchange,提问作者justanewb
相关产品推荐
相关产品推荐

