Как создать уникальный XML для каждого ряда данных в Python - PullRequest
4 голосов
/ 12 февраля 2020

У меня есть датафрейм, как показано ниже.

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

Я хочу создать отдельный XML для каждой записи в df3 в следующем формате ORDER_STS_CODE. xml( eg. 20200210285100_500.xml)

My текущий код может создать только один 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 из фрейма данных?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы можете придерживаться своего itertuples, если хотите. Все, что вам нужно сделать, это создать файл внутри вашего l oop.

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)
...