Python новичок здесь. У меня есть следующая структура XML (на самом деле это файл 2,5 ГБ):
<events version="1.0">
<event time="13834.0" type="actend" person="1537047" link="335909" facility="home811408" actType="home" />
<event time="13834.0" type="departure" person="1537047" link="335909" legMode="car_passenger" />
<event time="14516.0" type="travelled" person="1537047" distance="9749.86232009391" />
<event time="14516.0" type="arrival" person="1537047" link="79554" legMode="car_passenger" />
<event time="14516.0" type="actstart" person="1537047" link="79554" facility="105155" actType="work" />
<event time="15380.0" type="actend" person="3716370" link="280959" facility="outside_484" actType="outside" />
<event time="15380.0" type="departure" person="3716370" link="280959" legMode="car" />
<event time="15380.0" type="PersonEntersVehicle" person="3716370" vehicle="3716370" />
<event time="15380.0" type="vehicle enters traffic" person="3716370" link="280959" vehicle="3716370" networkMode="car" relativePosition="1.0" />
<event time="15380.0" type="coldEmissionEvent" linkId="280959" vehicleId="3716370" NO2="0.00273337378166616" NOx="0.33" HC="3.78" CO="19.99" FC="23.79" PM="0.00789998099207878" NMHC="3.57" />
<event time="15381.0" type="left link" vehicle="3716370" link="280959" />
</events>
Я хочу создать фрейм данных, который включает в себя только атрибуты и соответствующие им значения "link" и " NO 2" .
Мой текущий подход не работает из-за ключевой ошибки «NO2». Кроме того, мне приходится работать с iterparse, поскольку моему компьютеру не хватает памяти для работы с файлом 2,5 ГБ.
tree = ET.iterparse(gzip.open('V0_1pm/output_events.xml.gz', 'r'))
emissions = []
for xml_event, elem in tree:
if elem.tag == 'event':
atts = elem.attrib
emissions.append({
'NO2': atts['NO2'],
'link': atts['link'],
})
elem.clear()
emissions = pd.DataFrame.from_records(emissions)
emissions
Заранее большое спасибо!