Pandas 1.3起支持to_xml()方法导出XML,依赖lxml或标准库etree;默认root根节点、row行节点,可自定义root_name和row_name,支持编码设置与字符转义,但不原生支持属性及多层嵌套。
Pandas 1.3 版本起正式支持 to_xml() 方法,可直接将 DataFrame 导出为 XML 格式。但要注意:该方法默认依赖 lxml 或 etree(如 xml.etree.ElementTree),若未安装 lxml,会回退到标准库,部分高级功能受限。
最简调用只需指定文件路径或返回字符串:
df.to_xml("output.xml")
xml_str = df.to_xml(index=False)(index=False 可省略行索引)默认以 root 为根节点,每行数据用 row 包裹,列名作为子节点名,值为文本内容。例如 DataFrame 含 name 和 age 列,会生成类似:
用 root_name、row_name 控制外层标签:
df.to_xml("data.xml", root_name="students", row_name="student") → 根为 ,每行为
row_name="person" 并配合 namespaces 或预处理列名(如用点号 "address.city"),但原生不自动创建多层嵌套;需先用 pd.json_normalize 展开字典列,或手动构造层级列再导出XML 对非法字符(如控制符、未转义的 &)敏感:
df.to_xml(..., parser="lxml")(推荐)会自动转义;用标准库时建议加 escape_chars=True
df.to_xml("out.xml", encoding="utf-8"),文件头将包含
encoding="utf-8",否则可能报错或乱码该方法不支持直接导出带属性(attribute)的 XML(如 )。若需属性,有两种方式:
df["id"] = [1, 2, 3],导出后用字符串替换或 etree 手动修改to_xml,改用 xml.etree.ElementTree 手动构建更灵活的结构NaN)默认输出为空标签(),可用 na_rep
="null" 替换为指定字符串