如何用Python/Pandas将含JSON数组的DataFrame列拆分为两列?
在Pandas中展开JSON数组列的最简方法
首先需要注意你提供的原始数据存在JSON语法错误:部分字符串缺少闭合引号、使用了中文引号,实际处理前要确保vehicules列的每个字典都有正确的英文引号,否则会解析失败。
以下是实现需求的最简步骤:
- 使用
explode()将vehicules列中的列表拆分为单独行,每行对应一个字典 - 使用
pd.json_normalize()将字典展开为指定的两列
完整代码示例
import pandas as pd # 构造修正语法后的示例DataFrame df = pd.DataFrame({ 'vehicules': [ [{'immatriculation': 'AAAAAA', 'type': 'car'}], [{'immatriculation': 'BBBBBB', 'type': 'truck'}, {'immatriculation': 'CCCCCC', 'type': 'car'}], [{'immatriculation': 'DDDDDD', 'type': 'car'}] ] }) # 一行完成转换 result = pd.json_normalize(df.explode('vehicules')['vehicules']).reset_index(drop=True) print(result)
输出结果
immatriculation type 0 AAAAAA car 1 BBBBBB truck 2 CCCCCC car 3 DDDDDD car
代码说明
df.explode('vehicules'):把每个列表中的字典拆分为独立行,原本一个列表占一行的内容会拆成多个行,每行对应一个字典pd.json_normalize():将字典的键(immatriculation、type)转换为列名,字典的值填充到对应单元格.reset_index(drop=True):可选操作,用于重置结果的索引,让索引从0开始连续递增
内容的提问来源于stack exchange,提问作者Marmotte73
相关产品推荐
相关产品推荐

