python - 从 pandas 数据框创建单个 XML 文件
问题描述
我想从给定的 pandas 数据框创建一个专门格式化的 XML 文件。我的数据框看起来像这样 -
Doc_ID Doc_Name Doc_Category
abc123 aaa111 c1
abc456 aaa222 c2
我想将这样一个具有 10k 行的数据集格式化为一个具有以下格式的 XML 文件 -
<DOC>
<DOCNO> abc123 </DOCNO>
<TEXT> aaa111 + c1 </TEXT> ### Combines strings from 2 columns
</DOC>
<DOC>
<DOCNO> abc456 </DOCNO>
<TEXT> aaa222 + c2 </TEXT> ### Combines strings from 2 columns
</DOC>
我试图使用与此类似的东西,但我无法将它们全部组合成一个 XML 文件。
for i,row in testdoc.iterrows():
xml =['<DOC>']
xml.append('<{0}>{1}</{0}>'.format("DocNO", row["Doc_ID"]))
xml.append('<{0}>{1}</{0}>'.format("Text", row["Doc_Name"]+row['Doc_Category']))
xml.append('</DOC>')
我该怎么做呢?也有一个无效的字符处理程序会很好。
谢谢!
解决方案
尝试
import pandas as pd
df = pd.DataFrame(
[{'doc_id': 1, 'doc_name': 'jack', 'doc_cat': '__abc__'}, {'doc_id': 11, 'doc_name': 'ben', 'doc_cat': '$$abc$$'}])
d = df.to_dict(orient='list')
xml = '<ROOT>'
for idx, x in enumerate(d['doc_id']):
xml += '<DOC>'
xml += f'<DOCNO>{x}</DOCNO>'
xml += f'<TEXT>{d["doc_cat"][idx]}{d["doc_name"][idx]}</TEXT>'
xml += '</DOC>'
xml += '</ROOT>'
print(xml)
输出
<ROOT>
<DOC>
<DOCNO>1</DOCNO>
<TEXT>__abc__jack</TEXT>
</DOC>
<DOC>
<DOCNO>11</DOCNO>
<TEXT>$$abc$$ben</TEXT>
</DOC>
</ROOT>
推荐阅读
- react-native - 如何实施协助用户准确导航到任何地方的特定位置的最短路径
- java - drools.dump.dir 属性不通过api方法转储java版本的drool文件?
- html - PrimeFaces 对话框中的传单地图不正确渲染
- java - “默认字符编码”和“本机字符编码”是什么意思?
- javascript - 使用不透明度时无法点击事件监听器点击按钮
- go - 如何在自定义类型的切片上进行范围
- entity-framework - 无法与 EF fluent API 建立一对多关系
- python - 在 Linux 上使用无头 Chrome 访问被拒绝页面,而有头 Chrome 通过 Python 使用 Selenium 在 Windows 上工作
- javascript - react加载后如何运行vanilla javascript?
- c# - 为输入新记录预生成 ID 字段?