Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh menukar XML kepada Pandas DataFrame dengan cekap?

Bagaimanakah saya boleh menukar XML kepada Pandas DataFrame dengan cekap?

Barbara Streisand
Barbara Streisandasal
2024-11-30 19:46:11637semak imbas

How can I convert XML to a Pandas DataFrame efficiently?

Menukar XML kepada Pandas DataFrame Dengan Cekap

Fail XML selalunya boleh mengandungi data berharga yang boleh dianalisis menggunakan alatan seperti Pandas. Untuk menukar fail XML kepada DataFrame, pendekatan yang berkesan boleh didapati di bawah:

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

def iter_docs(author):
    author_attr = author.attrib
    for doc in author.iter('document'):
        doc_dict = author_attr.copy()
        doc_dict.update(doc.attrib)
        doc_dict['data'] = doc.text
        yield doc_dict

xml_data = io.StringIO(u'''YOUR XML STRING HERE''')

etree = ET.parse(xml_data) #create an ElementTree object
doc_df = pd.DataFrame(list(iter_docs(etree.getroot())))

Penjelasan:

  • Fungsi penjana iter_docs berulang sepanjang Dokumen XML, mengekstrak atribut pengarang, atribut dokumen dan kandungan nod teks dokumen ke dalam a kamus.
  • DataFrame Pandas kemudiannya dibina daripada senarai kamus yang dijana oleh fungsi iter_docs.

Nota Tambahan:

The contoh XML yang disediakan dalam soalan menganggap pengarang tunggal. Jika terdapat berbilang pengarang, fungsi penjana tambahan, iter_author, boleh digunakan untuk mengulang setiap pengarang dan menghasilkan semua kamus dokumen masing-masing. Ini memerlukan mengubah suai baris terakhir kod contoh kepada:

doc_df = pd.DataFrame(list(iter_author(etree)))

Untuk panduan lanjut tentang bekerja dengan XML dalam Python, rujuk tutorial ElementTree dalam dokumentasi perpustakaan xml.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar XML kepada Pandas DataFrame dengan cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn