Ich analysiere eine XML-ähnliche Datei über Elementbaum in Python und und schreibe den Inhalt in einen Pandas-Datenrahmen.Überprüfen und entfernen Sie doppelte Kinder-Tags in XML
Ich bin derzeit mit dem folgenden Problem konfrontiert: Die Existenz von Kindern Tags wird Variante für verschiedene Tags sein. Dies wäre bei der erwähnten Lösung here kein Problem. Der komplizierte Teil besteht jedoch darin, dass einige Tags Child-Tags dupliziert haben, während andere dies nicht tun. Zum Beispiel hat die erste Produktbezeichnung zwei (verschiedene) Artikelnummern und zwei gleiche Produkttypen (doppelt), während die zweite nur jeweils eine hat.
<main>
<product>
<article_nr>B00024J7C6</article_nr>
<article_nr>44253</article_nr>
<product_type>x</product_type>
<product_type>x</product_type>
</product>
<product>
<article_nr>B00024J7C7</article_nr>
<product_type>y</product_type>
</product>
</main>
Was ich möchte, ist tun: 1.) entfernen Sie die Duplikate für ‚product_type‘ und 2.) den Wert NULL gesetzt, wenn kein zweites article_nr existiert, sonst den Wert nehmen .
Mein Code so weit:
def create_dataframe(data):
df = pd.DataFrame(columns=('article_nr', 'article_nr2', 'product_type', 'product_type2','product_type2'))
for i in range(len(data)):
obj = data.getchildren()[i].getchildren()
row = dict(itertools.izip(['article_nr', 'article_nr2', 'product_type', 'product_type2','product_type2'],
[obj[0].text, obj[1].text, obj[2].text, obj[3].text, obj[4].text]))
row_s = pd.Series(row)
row_s.name = i
df = df.append(row_s)
return df
Dies funktioniert gut mit dem ersten Beispiel, aber offensichtlich nicht mit dem zweiten, weil es keine Werte für die zweite ‚article_nr‘ und ‚product_type‘ sind.
Ausgang sollte sein:
article_nr article_nr product_type
B00024J7C6 44253 x
B00024J7C7 NULL y
Könnten Sie bitte hinzufügen, welchen Code Sie bisher und die gewünschte Ausgabe haben? Vielen Dank. – alecxe
Warum können Sie das nicht nach dem Parsen tun? Warum musst du es vorher tun? – e4c5
Ich habe den Code und die gewünschte Ausgabe hinzugefügt @alecxe – lomaga