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

pandas json_normalize解析时前导零被转数值 如何强制读为字符串

pandas json_normalize 强制全字段返回字符串的实现方法

pandas.json_normalize 本身没有提供类似pd.read_csv(..., dtype=str)的全局类型指定参数,要保留-03456这类带前导零的原始字符串内容,最可靠的方案是从JSON解析源头拦截自动类型转换,具体实现如下:


方案1:JSON加载阶段强制保留原始字符串(推荐,可完整保留前导零)

json_normalize出现前导零丢失的本质原因:上游JSON解析器默认把数字格式的内容自动转成了int/float类型,转换过程中前导零会被直接剥离。只要在加载JSON数据时,指定所有数值类内容不做类型转换、直接返回原始字符串,再传给json_normalize即可,完全不会出现原始内容丢失的问题。
示例代码:

import json
import pandas as pd

# 通用解析钩子:直接返回输入的原始字符串,不做任何数值类型转换
def _str_parser(input_str):
    return input_str

# 加载JSON时替换默认的数值解析逻辑
with open("your_data.json", "r", encoding="utf-8") as f:
    raw_json = json.load(
        f,
        parse_int=_str_parser,
        parse_float=_str_parser,
        parse_constant=_str_parser
    )

# 执行扁平化处理,输出的所有字段均为原始字符串类型
df = pd.json_normalize(raw_json)

如果你的JSON数据来自接口响应,直接把json.load的第一个参数替换为接口返回的原始文本即可,其余逻辑不用调整。


方案2:解析后统一转字符串(仅适用于无原始内容还原需求的场景)

如果不需要找回已经被剥离的前导零,只是需要把所有字段统一为字符串类型,可以在json_normalize执行完成后全局转换类型:

df = pd.json_normalize(your_raw_data).astype(str)

注意:如果执行json_normalize时数字类内容已经被默认转成数值类型,带前导零的内容已经被截断,这个方法无法还原原始的前导零形态,优先选择第一种方案。


内容的提问来源于stack exchange,提问作者Isara De Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:24:28