Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从数据帧创建单个XML文件_Python_Python 3.x_Xml_Pandas_Parsing - Fatal编程技术网

Python 从数据帧创建单个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 +

我想从给定的数据帧创建一个特定格式的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>

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>