XML преобразование в DF в Python - PullRequest
0 голосов
/ 04 января 2019

Я открываю большой XML-файл, где я получаю некоторые результаты, используя этот код:

import os
import xml.etree.ElementTree as et
base_path=os.path.dirname(os.path.realpath(__file__))

xml_file=os.path.join(base_path,'my xml path file')
tree=et.parse(xml_file)
root=tree.getroot()

for child in root:
    for element in child:
        print (element.tag,':',element.text)
        for one in element:
            print(one.tag,':',one.text)

пример результата:

code_one : a
value_one : blue
default: 3

code_one : a
value_one : black
default: 12

code_one : b
value_one : green
default: 4

Rte:
Rte:

На данный момент все ясно и хорошо, но я хочу сохранить этот вывод, который я печатаю, во фрейм данных, или, если это будет проблемой, в файл, а затем я открою этот файл и сохраню как DF.

Мне нужно преобразовать вывод в следующий вид:

code_one, value_one, default
a, blue, 3       
a, black, 12
b, green, 4

спасибо за совет

Ответы [ 2 ]

0 голосов
/ 08 января 2019

это решило мою проблему: я написал вывод в файл, а затем я открыл с помощью панд в dataframe это как сохранить вывод:

f=open('file.txt','w')
for child in root:
    for element in child:
        f.write(str(element.tag)+':'+str(element.text))
        for one in element:
            f.write(str(one.tag)+':'+str(one.text))
f.close()
0 голосов
/ 04 января 2019

Попробуйте что-то вроде этого:

header = ["code_one", "value_one", "default"]
vals =[]
for child in root:
    for element in child:
        if header == [element.tag] + [x.tag for x in element]:
            vals.append([element.text] + [x.text for x in element]
print(", ".join(header))
for v in vals:
    print(", ".join(v))

Я не смог проверить, работает ли приведенный выше код, так как вы не предоставили файл примера, но он должен. Это помогает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...