如何将 XML 文件读入 Pandas Dataframe
How to read XML file into Pandas Dataframe
我有一个 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 生成 2D Table,例如:
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)
如何打印那种类型的2D Table?请帮忙,谢谢。
使用[]
过滤和重组列:
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
从 Pandas 1.3.0 开始,有一个 read_xml()
function 可以使用 reading/writing XML 数据 in/out of pandas更简单。
升级到 Pandas >1.3.0 后,您可以简单地使用:
df = pd.read_xml("___XML_FILEPATH___")
print(df)
(请注意,在上面的 XML 示例中, <Rowset>
标签需要关闭)
我有一个 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 生成 2D Table,例如:
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)
如何打印那种类型的2D Table?请帮忙,谢谢。
使用[]
过滤和重组列:
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
从 Pandas 1.3.0 开始,有一个 read_xml()
function 可以使用 reading/writing XML 数据 in/out of pandas更简单。
升级到 Pandas >1.3.0 后,您可以简单地使用:
df = pd.read_xml("___XML_FILEPATH___")
print(df)
(请注意,在上面的 XML 示例中, <Rowset>
标签需要关闭)