如何使用pd.read_json读取接口数据时指定code列为字符串保留前导零
解决pd.read_json读取股票代码丢失前导零的方案
pd.read_json默认开启自动类型推断,会将原始JSON中纯数字组成的字符串字段自动转换为整型/浮点型,导致股票代码的前导零被截断。可通过以下两种方式解决:
方法1:直接指定dtype参数(推荐,pandas 1.0及以上版本支持)
直接在pd.read_json调用时通过dtype参数指定code列为字符串类型即可,pandas会跳过对该列的自动类型推断,直接保留原始字符串格式:
import pandas as pd df = pd.read_json( "你的API接口地址", dtype={"code": str} # 强制指定code列按字符串读取 )
如果你的接口返回的是换行分隔的JSON(Line-delimited JSON),额外加lines=True参数即可,dtype配置依然生效。
方法2:先解析原始JSON再构造DataFrame(兼容旧版本pandas)
如果你的pandas版本较低不支持dtype参数,可先通过json模块读取原始接口响应,此时JSON中的字符串类型code会被完整保留为Python字符串,再直接构造DataFrame即可:
import pandas as pd import requests import json # 拉取接口原始响应 response = requests.get("你的API接口地址") # 直接解析原始JSON,不会触发pandas的自动类型转换 raw_data = json.loads(response.text) # 直接构造DataFrame,code列保留原始字符串格式 df = pd.DataFrame(raw_data)
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

