Python 从数据帧创建单个XML文件
我想从给定的数据帧创建一个特定格式的XML文件。我的数据框看起来像这样-Python 从数据帧创建单个XML文件,python,python-3.x,xml,pandas,parsing,Python,Python 3.x,Xml,Pandas,Parsing,我想从给定的数据帧创建一个特定格式的XML文件。我的数据框看起来像这样- Doc_ID Doc_Name Doc_Category abc123 aaa111 c1 abc456 aaa222 c2 我想将这样一个有10k行的数据集格式化为一个XML文件,格式如下- <DOC> <DOCNO> abc123 </DOCNO> <TEXT> aaa111 +
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>
abc123
aaa111+c1####组合了两列中的字符串
abc456
aaa222+c2####组合了两列中的字符串
我试图使用类似的东西,但我无法将它们全部合并到一个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>')
testdoc.iterrows()中的i行的
xml=['']
append(“{1}.”格式(“DocNO”,行[“Doc_ID”]))
append(“{1}.”格式(“文本”,行[“文档名称”]+行[“文档类别]))
xml.append(“”)
我该怎么做呢?如果有一个无效的字符处理程序也不错
谢谢 将熊猫作为pd导入
import pandas as pd
df = pd.DataFrame({
'Doc_ID': ['abc123', 'abc456'],
'Doc_Name': ['aaa111', 'aaa222'],
'Doc_Category': ['c1', 'c2']
})
def func(row):
xml = [' <DOC>']
xml.append(' <DOCNO>{0}</DOCNO>'.format(row['Doc_ID']))
xml.append(' <TEXT>{0}{1}</TEXT>'.format(row['Doc_Name'], row['Doc_Category']))
xml.append(' </DOC>\n')
return '\n'.join(xml)
xml = '<DOCS>\n' + ''.join(df.apply(func, axis = 1)) + '</DOCS>'
print(xml)
df=pd.DataFrame({
“文档ID:[“abc123”,“abc456”],
‘文件名’:[‘aaa111’、‘aaa222’],
‘文件类别’:[‘c1’、‘c2’]
})
def func(世界其他地区):
xml=['']
append(“{0}.”格式(行['Doc\u ID']))
append(“{0}{1}.”格式(行['Doc\u Name'],行['Doc\u Category']))
xml.append('\n')
返回'\n'。加入(xml)
xml='\n'+'.join(df.apply(func,axis=1))+''
打印(xml)
输出:
<DOCS>
<DOC>
<DOCNO>abc123</DOCNO>
<TEXT>aaa111c1</TEXT>
</DOC>
<DOC>
<DOCNO>abc456</DOCNO>
<TEXT>aaa222c2</TEXT>
</DOC>
</DOCS>
abc123
aaa111c1
abc456
aaa222c2
试试看
将熊猫作为pd导入
df=pd.DataFrame(
[{'doc_id':1,'doc_name':'jack','doc_cat':''abc_uu'},{'doc_id':11,'doc_name':'ben','doc_cat':'$$abc$'}])
d=df.to_dict(orient='list')
xml=“”
对于idx,枚举中的x(d['doc_id']):
xml+=''
xml+=f'{x}'
xml+=f'{d[“doc_cat”][idx]}{d[“doc_name”][idx]}'
xml+=''
xml+=''
打印(xml)
输出
<ROOT>
<DOC>
<DOCNO>1</DOCNO>
<TEXT>__abc__jack</TEXT>
</DOC>
<DOC>
<DOCNO>11</DOCNO>
<TEXT>$$abc$$ben</TEXT>
</DOC>
</ROOT>
1.
__杰克
11
$$abc$$ben
非常感谢。此外,在使用上述函数运行脚本时,我不断遇到以下错误:UnicodeEncodeError:“charmap”编解码器无法对6716874位置的字符“\u2265”进行编码:字符映射到。有没有办法简单地忽略这些字符?调用函数或将输出写入文件时出错?将输出写入文件时出错。请尝试在打开文件时指定编码:with open('filename','w',encoding='utf-8')为f:
<ROOT>
<DOC>
<DOCNO>1</DOCNO>
<TEXT>__abc__jack</TEXT>
</DOC>
<DOC>
<DOCNO>11</DOCNO>
<TEXT>$$abc$$ben</TEXT>
</DOC>
</ROOT>