我有下面的代码,它总是出错,并显示“ValueError:XPath不返回任何节点。确保行级节点在XPath中。如果document使用用xmln表示的名称空间,请确保定义名称空间并在xpath中使用它们。”
我试过几种方法,但还是不行。有什么想法吗?
import pandas as pd
sample_xml = '<Application Type="NewApplication" xmlns:pa="urn:Applyonline-Product-Attributes"><loanappBatch>some_data_here</loanappBatch></Application>'
df = pd.read_xml(
sample_xml,
xpath='.//pa:Application/pa:loanappBatch',
namespaces={'pa': 'urn:Applyonline-Product-Attributes'}
)
print(df)
字符串
我希望没有错误,并且dataframe将显示一个值为“some_data_here”的字段。
2条答案
按热度按时间xdyibdwo1#
你可以使用下面的代码片段。
字符串
的数据
nuypyhwy2#
pandas.read_xml
的实现有两个问题:pa
。xpath
返回文本值源,而不是元素的集合。根据文件:XPath应该返回一个元素集合,而不是单个元素。
考虑这个问题的一种方法是,最终的列不应该在xpath中,但其父列应该在xpath中。
因此,要解决这个问题,只需将
xpath
调整到不需要命名空间分配的根级别,将其所有子节点迁移到数据框的列和行:字符串