Einlesen von XML-Daten in PythonPython

Python-Programme
Anonymous
 Einlesen von XML-Daten in Python

Post by Anonymous »

Ich suche Hilfe bei der Konvertierung der folgenden XML-Daten in einen Datenrahmen.
Ich habe es geschafft, einen funktionierenden Code in R zu schreiben (XML-Paket, Code ist chaotisch), aber dann wurde mir klar, dass es in Python vielleicht noch einfacher ist. Ich habe aus meinem ursprünglichen Datensatz einige gefälschte Daten generiert und mit dem folgenden Code herumgespielt. Bitte beachten Sie, dass meine Originaldaten viel größer sind (mehr als 1000 Einträge). Wie Sie sehen können, gibt es am Anfang und am Ende einige Daten, die nicht zum Hauptteil der Daten gehören. Der Code funktioniert gut für diese synthetisierten kleineren Daten, aber als ich meine Originaldaten eingegeben habe, wurde mir immer wieder die folgende Fehlermeldung angezeigt. Ich würde mich wirklich über jede Hilfe freuen.

Code: Select all

import xml.etree.ElementTree as ET
import pandas as pd

# Parse XML file
tree = ET.parse("/mnt/data/pasted.txt")
root = tree.getroot()

# -------------------------
# 1. Extract column names
# -------------------------
headers = []
header_node = root.find("header")

for item in header_node.findall("item"):
headers.append(item.get("name"))

# -------------------------
# 2. Extract row data
# -------------------------
rows = []
data_node = root.find("data")

for row in data_node.findall("row"):
row_values = []
for value in row.findall("value"):
# Handle xs:nil="true"
if value.attrib.get("{http://www.w3.org/2001/XMLSchema-instance}nil") == "true":
row_values.append(None)
else:
row_values.append(value.text)
rows.append(row_values)

# -------------------------
# 3.  Create DataFrame
# -------------------------
df = pd.DataFrame(rows, columns=headers)

# View result
print(df)

Code: Select all



















summary


















previous total
15

















current total
25

















type


















total
25

















A1
M
1980-03-12
45
Red Orange

2000-01-19
20002-01-02
21

2000-01-03
2020-01-13
13



-0.50


A2
M
1975-07-05
50
Stony Rock

1999-01-10



1980-10-01
2000-01-12
30



3





RND
error

















weight
weight change

















---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[9], line 14
11 headers = []
12 header_node = root.find("header")
---> 14 for item in header_node.findall("item"):
15     headers.append(item.get("name"))
17 # -------------------------
18 # 2. Extract row data
19 # -------------------------

AttributeError: 'NoneType' object has no attribute 'findall'

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post