You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas json_normalize时将null替换为空数组/字典的实现方法

pandas json_normalize null值替换解决方案

核心处理逻辑

在调用json_normalize之前先对原始JSON数据做预处理,将指定字段/全局的null值替换为你需要的空数组或空字典即可解决报错问题。

代码实现

1. 导入依赖库

import pandas as pd
import json

2. 通用null值替换函数

支持全局替换所有null为指定值,可自定义替换为数组/字典:

def replace_null(obj, replace_val=[]):
    if isinstance(obj, dict):
        return {k: replace_null(v, replace_val) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [replace_null(item, replace_val) for item in obj]
    elif obj is None:
        return replace_val
    else:
        return obj

3. 完整使用示例(基于你提供的样例数据)

# 原始样例数据
raw_data = {
    "id": {
        "0": "x0123455",
        "1": "x0123456"
    },
    "team": {
        "0": None,
        "1": [
            {
                "name": "Jenny",
                "email": "jenny@gmail.com"
            }
        ]
    }
}

# 替换所有null为空数组,若要替换为空字典则把replace_val改成{}即可
processed_data = replace_null(raw_data, replace_val=[])

# 转换为行格式后调用json_normalize
rows = []
for idx in raw_data['id'].keys():
    rows.append({
        "id": raw_data['id'][idx],
        "team": processed_data['team'][idx]
    })

# 展开team字段生成结构化DataFrame
df = pd.json_normalize(
    rows,
    record_path='team',
    meta='id',
    record_prefix='team_',
    errors='ignore'
)
print(df)

补充说明

  • 若不需要展开嵌套的team字段,直接调用pd.json_normalize(rows)即可,空数组会作为字段值正常保留
  • errors='ignore'参数可进一步避免特殊异常导致的程序中断,和预处理逻辑搭配使用稳定性更高
  • 你目前使用的过滤null值方案适合不需要保留对应行的场景,预处理替换方案可以完整保留所有行数据,不会丢失信息

内容的提问来源于stack exchange,提问作者JamesBowery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:06:04