python - 如何将 XML 文件读入 Pandas Dataframe

标签 python pandas xml elementtree

我有一个 xml 文件:“product.xml”,我想使用 pandas 读取它,这里是示例文件的示例:

<?xml version="1.0"?>
 <Rowset>
  <ROW>
   <Product_ID>32</Product_ID>
   <Company_ID>2</Company_ID>
   <User_ID>90</User_ID>
   <Product_Type>1</Product_Type>
   <Application_ID>BBC#:1010</Application_ID>
  </ROW>
  <ROW>
   <Product_ID>22</Product_ID>
   <Company_ID>4</Company_ID>
   <User_ID>190</User_ID>
   <Product_Type>2</Product_Type>
   <Application_ID>NBA#:1111</Application_ID>
  </ROW>
  <ROW>
   <Product_ID>63</Product_ID>
   <Company_ID>4</Company_ID>
   <User_ID>99</User_ID>
   <Product_Type>1</Product_Type>
   <Application_ID>BBC#:1212</Application_ID>
  </ROW>
  <ROW>
   <Product_ID>22</Product_ID>
   <Company_ID>2</Company_ID>
   <User_ID>65</User_ID>
   <Product_Type>2</Product_Type>
   <Application_ID>NBA#:2210</Application_ID>
  </ROW>

我正在尝试使用 pandas 生成二维表,例如:

Application ID Product Type  Product ID
BBC#:1010            1         32
NBA#:1111            2         22
BBC#:1212            1         63  
NBA#:2210            2         22   

到目前为止,我已经尝试过这段代码:

import xml.etree.cElementTree as ET
import pandas as pd
import pandas_read_xml as pdx
df = pdx.read_xml('product.xml')
path='product.xml'
dfcols = ['Application_ID', 'Product_Type', 'Product_ID']
root = et.parse(path)
rows = root.findall('.//ROW')
#NESTED LIST
xml_data = [[row.get('Application_ID'), row.get('Product_Type'), row.get('Product_ID')] for row in rows]
df_xml = pd.DataFrame(xml_data, columns=dfcols)

print(df_xml)

这种二维表怎么打印啊,求助,谢谢。

最佳答案

使用 [] 过滤和重组列:

cols = ['Application_ID', 'Product_Type', 'Product_ID']
df = pd.read_xml('product.xml')[cols]
print(df)

# Output:
  Application_ID  Product_Type  Product_ID
0      BBC#:1010             1          32
1      NBA#:1111             2          22
2      BBC#:1212             1          63
3      NBA#:2210             2          22

如果您想用 ' ' 替换列名中的 '_':

df.columns = df.columns.str.replace('_', ' ')
print(df)

# Output:
  Application ID  Product Type  Product ID
0      BBC#:1010             1          32
1      NBA#:1111             2          22
2      BBC#:1212             1          63
3      NBA#:2210             2          22

关于python - 如何将 XML 文件读入 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69432420/

相关文章:

python - 使用 oauth 和 twython 从应用程序更新 Twitter 状态

Python/Pandas 合并并从逗号分隔的变量/列生成唯一值列表

python - 无法将 pandas Dataframe 附加到现有 Excel 工作表

php - 远程解析 XML 与使用 cURL 本地保存文件并在本地解析

python - 在 Python 中传递 "pointer to a virtual function"作为参数

python - 使用 Flask、Jinja2 模板渲染一个可编辑的表格,然后处理返回的表格数据

python - Django 1.8 错误时没有反向匹配

python - 按元素将单行 append 到 Pandas 数据框中

java - 使用 Java 将 RSS Feed XML 转换为 JSON 显示特殊字符

java - 使用 Jackson/FasterXML 读取 XML 时如何忽略某些元素?