pyspark 我需要使用Python脚本在数据框中创建一个嵌套的复杂XML

deyfvvtc  于 2023-10-15  发布在  Spark
关注(0)|答案(1)|浏览(121)

我有多个不同字段的嵌套xml。谁能建议一个概括的脚本或教程做上述任务
我正在尝试使用Python脚本将嵌套的XML转换为XML框架。我看到一些使用API调用的解决方案,但无法获得这些选项来分解XML。

qni6mghb

qni6mghb1#

将嵌套的XML文件转换为pandas DataFrame需要解析XML,然后以适合DataFrame的方式构造数据。
您可以使用lxml库解析XML,然后根据解析后的数据构建pandas DataFrame。

import pandas as pd
from lxml import etree

def xml_to_dict(xml_string):
    root = etree.fromstring(xml_string)
    data = {}
    for child in root:
        data[child.tag] = []
        for subchild in child:
            subdata = {}
            for subsubchild in subchild:
                subdata[subsubchild.tag] = subsubchild.text
            data[child.tag].append(subdata)
    return data

def xml_to_dataframe(xml_string):
    data_dict = xml_to_dict(xml_string)
    frames = {}
    for key, values in data_dict.items():
        frames[key] = pd.DataFrame(values)
    return frames

# Sample XML string with nested elements
xml_string = """
<root>
    <users>
        <user>
            <name>John</name>
            <age>28</age>
        </user>
        <user>
            <name>Jane</name>
            <age>25</age>
        </user>
    </users>
    <products>
        <product>
            <name>Apple</name>
            <price>1.5</price>
        </product>
        <product>
            <name>Banana</name>
            <price>1.2</price>
        </product>
    </products>
</root>
"""

frames = xml_to_dataframe(xml_string)

# Print the DataFrame for users
print(frames['users'])

# Print the DataFrame for products
print(frames['products'])

这段代码将接受给定的XML并生成两个DataFrame,一个用于用户,一个用于产品。如果xml_to_dict函数与本例不同,则可以调整它以匹配XML的特定结构。

相关问题