答案:python中pandas导出xml需转换数据结构,推荐使用dicttoxml库或内置ElementTree模块。1. 安装dicttoxml后将DataFrame转为记录列表并生成格式化XML;2. 使用xml.etree.ElementTree手动构建带行索引的XML树结构;3. 通过字符串拼接方式按模板写入简洁XML文件。选择依据为是否需美化输出、能否安装第三方包及结构自定义需求。

Python 中 pandas 本身不直接支持将 DataFrame 保存为 XML 文件,但可以通过转换成字典或记录列表,再使用 xml.etree.ElementTree 或第三方库如 dicttoxml 来实现导出 XML。以下是几种实用方法。
方法一:使用 dicttoxml 库导出(推荐)
安装依赖:
pip install dicttoxml
代码示例:
import pandas as pd
from dicttoxml import dicttoxml
import xml.dom.minidom as md
# 示例数据
df = pd.DataFrame({
‘Name’: [‘Alice’, ‘Bob’],
‘Age’: [25, 30],
‘City’: [‘Beijing’, ‘Shanghai‘]
})
立即学习“Python免费学习笔记(深入)”;
# 转换为字典列表
data = df.to_dict(orient=’records’)
# 转为XML
xml = dicttoxml(data, custom_root=’Data’, attr_type=False)
# 格式化输出
dom = md.parseString(xml)
pretty_xml = dom.toprettyxml()
# 保存到文件
with open(‘output.xml’, ‘w’, encoding=’utf-8′) as f:
f.write(pretty_xml)
方法二:手动构建 XML 结构(无需额外库)
使用 Python 内置的 xml.etree.ElementTree 模块:
import pandas as pd
import xml.etree.ElementTree as ET
df = pd.DataFrame({
‘Name’: [‘Alice’, ‘Bob’],
‘Age’: [25, 30],
‘City’: [‘Beijing’, ‘Shanghai’]
})
# 创建根节点
root = ET.Element(“DataFrame”)
# 遍历每一行
for index, row in df.iterrows():
record = ET.SubElement(root, “Record”, id=str(index))
for col in df.columns:
child = ET.SubElement(record, col)
child.text = str(row[col])
# 构建树并写入文件
tree = ET.ElementTree(root)
tree.write(“output_manual.xml”, encoding=”utf-8″, xml_declaration=True)
方法三:转为字符串后格式化
若需更灵活控制标签名和结构,可结合字符串拼接或模板方式生成简洁 XML:
def df_to_xml(df, filename):
with open(filename, ‘w’) as f:
f.write(‘<?xml version=”1.0″ encoding=”UTF-8″?>n<Data>n’)
for _, row in df.iterrows():
f.write(‘ <Item>n’)
for col in df.columns:
value = row[col]
f.write(f’ <{col}>{value}</{col}>n’)
f.write(‘ </Item>n’)
f.write(‘</Data>’)
# 调用
df_to_xml(df, ‘simple_output.xml’)
基本上就这些。选择哪种方式取决于你是否需要格式美化、是否允许安装第三方包,以及对 XML 结构的要求。dicttoxml 最方便,ElementTree 更标准,字符串拼接最轻量。


