在python中将xml文件读取到数据帧

在python中将xml文件读取到数据帧,python,pandas,xml,Python,Pandas,Xml,我得到了一个xml文件,需要在python中读取为数据帧,它是xml代码的一部分: <?xml version="1.0" encoding="UTF-8"?> <root> <data id="root_661191"> <index id="data_162062"> <item id="index_8

我得到了一个xml文件,需要在python中读取为数据帧,它是xml代码的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <data id="root_661191">
        <index id="data_162062">
            <item id="index_829361_1">173915</item>
            <item id="index_829361_2">14712</item>
            <item id="index_829361_3">321255</item>
        </index>
        <property_id id="data_809625">
            <item id="property_id_844926_1">88942.0</item>
            <item id="property_id_844926_2">88162.0</item>
            <item id="property_id_844926_3">80553.0</item>
        </property_id>
        <addr_street id="data_409265">
            <item id="addr_street_959977_1">58 Middleton Street</item>
            <item id="addr_street_959977_2">24 Royena Road</item>
            <item id="addr_street_959977_3">9 Cafardi Boulevard</item>
        </addr_street>
        <price id="data_784942">
           <item id="price_225606_1">7480000.0</item>
           <item id="price_225606_2">7728000.0</item>
           <item id="price_225606_3">7659000.0</item> 
        </price>
    </data>
</root>

我想这就是你想要的。如果需要,您应该能够将其放入函数中

tree = et.parse('myxmlfile.xml')
root = tree.getroot()

df_cols = ['index','property_id','addr_street','price']
mlist = []
for col in df_cols:
    for d in root.findall('data'):
        # print(d.attrib)
        for c in d.findall(col):
            # print(c)
            # print(c.attrib)
            # print(c.attrib.get('id'))
            lst = []
            for itm in c.findall('item'):
                # print(itm.text)
                lst.append(itm.text)
        # print({col:lst})
        mlist.append(pd.DataFrame({col:lst}))
mlist
pd.concat(mlist, axis=1)
输出:

    index property_id          addr_street      price
0  173915     88942.0  58 Middleton Street  7480000.0
1   14712     88162.0       24 Royena Road  7728000.0
2  321255     80553.0  9 Cafardi Boulevard  7659000.0

伟大的请接受答案。非常感谢。
    index property_id          addr_street      price
0  173915     88942.0  58 Middleton Street  7480000.0
1   14712     88162.0       24 Royena Road  7728000.0
2  321255     80553.0  9 Cafardi Boulevard  7659000.0