Преобразование XML в Pandas Dataframe
XML-файл:
<start>
<Hit>
<hits path="xxxxx" id="xx" title="xxx">
<hits path="aaaaa" id="aa" title="aaa">
</Hit>
<Hit>
<hits path="bbbbb" id="bb" title="bbb">
</Hit>
<Hit>
<hits path="qqqqq" id="qq" title="qqq">
<hits path="wwwww" id="ww" title="www">
<hits path="ttttt" id="tt" title="ttt">
</Hit>
</start>
Код Python:
import xml.etree.cElementTree as et
tree = et.parse(xml_data)
root = tree.getroot()
for child in root:
record = child.attrib.values()
all_records.append(record)
pd1 = pd.DataFrame(all_records,columns=subchild.attrib.keys())
У меня есть неструктурированный файл XML. Элемент попадания может иметь случайное количество элементов вспомогательных попаданий.
Я хочу сделать список всех первых подэлементов попаданий из всех элементов попадания.
Ответ:
Содержание кадра данных:
path id title
0 xxxxx xx xxx
1 bbbbb bb bbb
2 qqqqq qq qqq
Вот и все. Все остальные пункты должны игнорироваться.
record = child.attrib.values()
Эта строка кода принимает все значения из элемента попаданий. т.е. всего 6 значений. Я хочу только 3 значения, так как доступен только 3 метки.
Как это сделать?
1 ответ
Я думаю, что нужно изменить:
record = child.attrib.values()
чтобы:
record = child[0].attrib.values()
для выбора только первые значения.
Перечислите комплексное решение:
all_records = [child[0].attrib.values() for child in root ]
Если возможно, какой-нибудь пустой Hit
элементы:
all_records = []
for child in root:
if len(child) > 0:
record = child[0].attrib.values()
all_records.append(record)
Решение для понимания списка:
all_records = [child[0].attrib.values() for child in root if len(child) > 0]