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

Pandas 1.3.2中read_xml指定数据类型及缺失值类型处理问题

针对Pandas 1.3.2读取XML.gz的类型问题解决方案

1. 读取时指定数据类型

Pandas 1.3.2的read_xml暂不支持直接传入dtype参数指定列类型,但可以通过converters参数强制将指定列转换为字符串,保留原始内容格式:

df = pd.read_xml(
    path_or_buffer=PATH,
    xpath="//Data",
    compression="gzip",
    converters={"colA": str, "colB": str}
)

该方法会在读取过程中直接将colA和colB转为字符串类型,像168E3这类易被识别为科学计数法的内容也会保留原字符串形式。

2. 避免缺失值列被设为浮点型

出现此问题的核心原因是Pandas默认会把包含缺失值的数值列转为浮点型(整数类型无法存储NaN),解决思路是让目标列保持字符串类型:

  • 方法一:读取时通过converters处理缺失值,直接转为空字符串:
df = pd.read_xml(
    path_or_buffer=PATH,
    xpath="//Data",
    compression="gzip",
    converters={
        "colA": lambda x: x if x is not None else "",
        "colB": lambda x: x if x is not None else ""
    }
)
  • 方法二:读取后统一转换列类型并处理缺失值:
df = pd.read_xml(
    path_or_buffer=PATH,
    xpath="//Data",
    compression="gzip"
)
# 将目标列转为字符串,同时把NaN替换为空字符串
df["colA"] = df["colA"].astype(str).replace("nan", "")
df["colB"] = df["colB"].astype(str).replace("nan", "")

若无需替换为空字符串,仅需保持列类型为字符串,直接使用astype(str)即可,此时缺失值会显示为字符串"nan"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:12:38