如何将属性缺失、顺序不一的JSON转换为Pandas Dataframe
将含缺失属性的JSON数组转换为带Null填充的DataFrame
问题说明
给定存在属性缺失、属性顺序不固定的JSON数组:
[ { "name": "user1", "age": 12, "category": "young" }, { "name": "user2", "category": "old" }, { "name": "user3", "age": 23 } ]
需要转换为包含自增id列、缺失值以null填充的DataFrame,目标格式如下:
| id | name | age | category |
|---|---|---|---|
| 1 | user1 | 12 | young |
| 2 | user2 | null | old |
| 3 | user3 | 23 | null |
解决方案(Python Pandas)
Pandas的DataFrame构造器会自动识别所有存在的属性作为列,缺失值默认填充NaN,后续可替换为null,再添加自增id列即可:
步骤1:加载数据并转换为DataFrame
import pandas as pd # 示例JSON数据 data = [ {"name": "user1", "age": 12, "category": "young"}, {"name": "user2", "category": "old"}, {"name": "user3", "age": 23} ] # 转换为DataFrame,自动对齐列并填充缺失值 df = pd.DataFrame(data)
步骤2:添加自增id列
# 在第0位插入id列,从1开始计数 df.insert(0, 'id', range(1, len(df) + 1))
步骤3:将NaN替换为null
如果需要将默认的NaN显示为字符串null,执行以下操作:
df = df.fillna("null")
从JSON文件读取的情况
如果数据存储在JSON文件中,直接使用read_json方法同样能自动处理:
df = pd.read_json("your_data.json") df.insert(0, 'id', range(1, len(df) + 1)) df = df.fillna("null")
无论原JSON对象的属性顺序如何,Pandas都会自动统一列顺序,最终输出与目标格式一致。
内容的提问来源于stack exchange,提问作者Owenn
相关产品推荐
相关产品推荐

