如何用Pandas的to_xml方法将DataFrame导出为XML

3次阅读

pandas 1.3 起支持 to_xml()方法导出 XML,依赖 lxml 或 标准库 etree;默认 root 根节点、row 行节点,可自定义 root_name 和 row_name,支持 编码 设置与字符转义,但不原生支持属性及多层嵌套。

如何用 Pandas 的 to_xml 方法将 DataFrame 导出为 XML

Pandas 1.3 版本起正式支持 to_xml() 方法,可直接将 DataFrame 导出为 XML 格式。但要注意:该方法默认依赖 lxmletree(如 xml.etree.ElementTree),若未安装 lxml,会回退到 标准库,部分高级功能受限。

基础用法:生成简单结构化 XML

最简调用只需指定文件路径或返回 字符串

  • 写入文件:df.to_xml("output.xml")
  • 获取字符串:xml_str = df.to_xml(index=False)index=False 可省略行索引)

默认以 root 为根节点,每行数据用 row 包裹,列名作为子节点名,值为文本内容。例如 DataFrame 含 nameage 列,会生成类似:

Alice30

自定义节点名称与层级结构

root_namerow_name 控制外层标签:

  • df.to_xml("data.xml", root_name="students", row_name="student") → 根为 <code>&lt;students></students>,每行为 <code>&lt;student></student>
  • 支持嵌套:设 row_name="person" 并配合 namespaces 或预处理列名(如用点号 <code>&quot;address.city"),但原生不自动创建多层嵌套;需先用 pd.json_normalize 展开字典列,或手动构造层级列再导出

处理特殊字符与 编码

XML 对非法字符(如控制符、未转义的 <code>&)敏感:

  • df.to_xml(……, parser="lxml")(推荐)会自动转义;用标准库时建议加 escape_chars=True
  • 指定编码:df.to_xml("out.xml", encoding="utf-8"),文件头将包含 <?xml version='1.0' encoding='utf-8'?>
  • 含中文时务必设 encoding="utf-8",否则可能报错或乱码

注意事项与 常见问题

该方法不支持直接导出带属性(Attribute)的 XML(如 <student id="1"></student>)。若需属性,有两种方式:

  • 临时添加一列如 df["id"] = [1, 2, 3],导出后用字符串替换或 etree 手动修改
  • 弃用 to_xml,改用 xml.etree.ElementTree 手动构建更灵活的结构
  • 空值(NaN)默认输出为空标签(<age></age>),可用 na_rep="NULL" 替换为指定字符串
站长
版权声明:本站原创文章,由 站长 2025-12-18发表,共计1144字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources