python-3.x - 如何在Python中为数据框的每一行创建唯一的XML

标签 python-3.x xml pandas dataframe itertools

我有如下数据框。

df3.head(5)

ORDER      STS_CODE   Date
20200210285112  117      2030-12-31
20200210285112  300      2020-02-18
20200210285104  300      2020-02-20
20200210285101  400      2020-02-16
20200210285100  500      2030-02-19


我想使用以下格式ORDER_STS_CODE.xml ( eg. 20200210285100_500.xml)为df3中的每个记录创建不同的XML

我当前的代码只能创建一个单独的xml,其中包含所有记录。

当前代码

head ="""
<?xml version="1.0" encoding="UTF-8"?>
<hdr:MSGHDR>

<VERNUM>0100</VERNUM>

<CREDTM>{0}</CREDTM>

</hdr:MSGHDR>
"""

body ="""
<ord:ORD>

<ORDKEY>{}</ORDKEY>

<ORDTYP>TO</ORDTYP>

<osi:ORDSTSINF types:STSCDE="{}">

<DTM>{}</DTM>

</osi:ORDSTSINF>

</ord:ORD>
"""
footer = """</ilsord:ILSORD>
"""
from datetime import datetime
import time
df3 = pd.read_csv('XML1.csv')
df3.drop(df3.filter(regex="Unnamed"),axis=1, inplace=True)
glogdate = datetime.today().strftime('%Y-%m-%d %H:%M:%S')

with open('Test.xml', 'w') as f:
    f.write(head.format(glogdate))
    for row in df3.itertuples():
       f.write(body.format(row[1], row[2], row[3]))
    f.write(footer)


我应该在当前代码中做什么以从数据帧中创建不同的Xml?

最佳答案

如果愿意,可以坚持使用itertuples。您需要做的就是在循环中创建文件。

for row in df3.itertuples():
    with open(f'{row[1]}_{row[2]}.xml', 'w') as f:
        f.write(head.format(glogdate))
        f.write(body.format(row[1], row[2], row[3]))
        f.write(footer)

关于python-3.x - 如何在Python中为数据框的每一行创建唯一的XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60180608/

相关文章:

python-3.x - 类标签的数量必须大于 1

mysql - Live Server 响应 mysql 不支持 ExtractValue 函数

python - 如何使用 XlsxWriter 根据另一张工作表中相应的单元格值格式化一张工作表中的所有单元格?

python - 根据行索引创建名为 "Id"的列

python import 语句在函数中失败

Python 正则表达式中 z 补一

xml - <xsl :sort> not working in XSLT PI mapping

xml - 从命令行列出 XML 节点的 XPath

python - 突出显示两个数据框之间的差异

python - Python 杂货购物程序中的错误