将Pandas DataFrame转为XML时提示无效标签名的原因
XML转换报错原因及解决办法
问题详情
原始数据结构
Loader TXN Description ANUMS Value Date 67805499 ZZ-OPTR 11504 1/27/2023 23:59 67805499 ZZ-OPTR 33002 1/27/2023 23:59 67805499 ZZ-OPTR 11504 1/27/2023 23:59 67805499 ZZ-OPTR 33002 1/27/2023 23:59 67805501 ZZ-OPTR 11504 1/27/2023 23:59 67805501 ZZ-OPTR 33002 1/27/2023 23:59 67805501 ZZ-OPTR 66666 1/27/2023 23:59
执行代码
import pandas as pd df= pd.read_csv('C:\Users\ShDalal\Desktop\twosigma.csv') with open('outputf.xml', 'w') as myfile: myfile.write(df.to_xml())
报错内容
ValueError: Invalid tag name 'Loader TXN ID'
错误原因
XML标签命名有严格规则:不能包含空格。你的DataFrame列名(比如Loader TXN ID、TXN Description、Value Date)都带有空格,而pandas的to_xml()方法默认直接将列名作为XML标签名,这些带空格的名称违反了XML的命名规范,因此触发报错。
解决办法
方案1:修改列名,替换空格为合法字符
直接将DataFrame列名中的空格替换为下划线,规避XML规则限制:
import pandas as pd df = pd.read_csv('C:\Users\ShDalal\Desktop\twosigma.csv') # 将所有列名的空格替换为下划线 df.columns = [col.replace(' ', '_') for col in df.columns] # 生成XML文件 with open('outputf.xml', 'w') as myfile: myfile.write(df.to_xml())
方案2:自定义XML标签名,保留原始列名
如果不想修改原始列名,可通过element_name参数映射合法的标签名:
import pandas as pd df = pd.read_csv('C:\Users\ShDalal\Desktop\twosigma.csv') # 为带空格的列名指定对应的合法标签 tag_mapping = { 'Loader TXN ID': 'Loader_TXN_ID', 'TXN Description': 'TXN_Description', 'Value Date': 'Value_Date' } # 生成XML时自动替换标签名 with open('outputf.xml', 'w') as myfile: myfile.write(df.to_xml(element_name=lambda col: tag_mapping.get(col, col)))
内容的提问来源于stack exchange,提问作者Amrita
相关产品推荐
相关产品推荐

