Vielleicht eine einfache Frage für einige von Ihnen.Python Pandas: Verwenden Sie Kartenfunktion auf Iterator
Ich analysiere einen XML-Baum, der eine ziemlich komplexe und verschachtelte Struktur hat. Dies ist Teil des Codes:
import xml.etree.ElementTree as ET
import pandas as pd
from bs4 import BeautifulSoup as BS
tree = ET.parse('input_data.xml')
root = tree.getroot()
for unit in root.iter('xml_element_name'):
# do something with the unit
Aber ich mochte die für jede Iteration-loszuwerden, da ich eine Map-Funktion verwenden möchte (zB Pandas.Series.map oder Pandas.Dataframe.map oder Ähnliches). Also das ist Pseudo-Code, den ich gerne erreichen möchte:
items = pd.Series(root.iter('xml_element_name'))
df = pd.Dataframe(items.map(lambda unit: ....))
Aber wie? Irgendeine Idee?
PS: Ein Beispiel XML kann in der tutorial of the ElementTree gefunden werden.
Warum möchte ich dies tun? Da ich später zu PySpark wechseln möchte, wird jedes XMLElement (Unit) parallel behandelt.
Das funktioniert . Auch wenn es sinnvoll ist, das erste Element (Hierarchie) bereits beim ersten Lauf zu teilen. Das bedeutet, dass Sie mehr als eine Spalte beim Aufruf von root.iter() erhalten könnten, wodurch Sie entweder ein Wörterbuch oder eine Reihe erstellen würden. – Matthias