【问题标题】:Parse nested XML into DataFrame将嵌套的 XML 解析为 DataFrame
【发布时间】:2020-02-12 11:28:17
【问题描述】:

我从 API 以 XML 形式返回响应。它看起来像:

<result_set>
    <status> ...
    </status>
    <copyright> ...
    </copyright>
    <results>
       <congress> ...
       </congress>
       <chamber> ...
       </chamber>
       <num_results> ...
       </num_results>
       <offset> ...
       </offset>
       <members>
         <member>
           <id> ... </id>
           <name> ... </name>
           ...
           ...
           ...
         </member>
         <member> ... </member>
         ...
         ... 
         ...
       </members>
    </results>
</result_set>

我需要将每个标签下的数据转换成一个pandas数据框的形式:

id name ... ... ...
1  JOHN ... ... ...
2  DOE  ... ... ...

我已经尝试过 ElementTree,但到目前为止我的所有尝试都失败了。

【问题讨论】:

  • ElementTree 是一个很好的方法。向我们展示您迄今为止的尝试,即使它不起作用,我们也可以提供帮助
  • 只需要members 下的数据吗?
  • @balderman,是的。我需要每个成员的数据。
  • @lazycamper 好的。看我的回答。

标签: python xml pandas dataframe xml-parsing


【解决方案1】:

下面

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

xml = '''<r> 
         <members>
         <member>
           <id>1</id>
           <name>jack</name>
         </member>
         <member>
           <id>5</id>
           <name>dan</name>
         </member>

       </members>
       </r>'''

root = ET.fromstring(xml)
data = []
members = root.findall('.//member')
for member in members:
    data.append({c.tag:c.text for c in list(member)})
df = pd.DataFrame(data)
print(df.head())

输出

  id  name
0  1  jack
1  5   dan

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2021-04-15
    • 2020-10-01
    相关资源
    最近更新 更多