当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.read_xml用法及代码示例


用法:

pandas.read_xml(path_or_buffer, xpath='./*', namespaces=None, elems_only=False, attrs_only=False, names=None, encoding='utf-8', parser='lxml', stylesheet=None, compression='infer', storage_options=None)

将 XML 文档读入 DataFrame 对象。

参数

path_or_bufferstr、路径对象或 file-like 对象

字符串、路径对象(实现 os.PathLike[str] )或实现 read() 函数的 file-like 对象。该字符串可以是任何有效的 XML 字符串或路径。该字符串还可以是 URL。有效的 URL 方案包括 http、ftp、s3 和文件。

xpathstr,可选,默认“./*”

解析所需节点集以迁移到 DataFrame 的 XPath。 XPath 应该返回元素的集合而不是单个元素。注意:etree 解析器支持有限的 XPath 表达式。对于更复杂的 XPath,请使用需要安装的 lxml

namespaces字典,可选

XML 文档中定义的命名空间为字典,键为命名空间前缀,值为 URI。不需要在 XML 中包含所有名称空间,只需在 xpath 表达式中包含名称空间。注意:如果 XML 文档使用表示为 xmlns=’<URI>’ 的默认命名空间而没有前缀,则必须将任何临时命名空间前缀(例如 ‘doc’)分配给 URI,以便解析底层节点和/或属性。例如,

namespaces = {"doc":"https://example.com"}
elems_only布尔值,可选,默认为 False

仅解析指定 xpath 处的子元素。默认情况下,返回所有子元素和非空文本节点。

attrs_only布尔值,可选,默认为 False

仅解析指定 xpath 处的属性。默认情况下,返回所有属性。

nameslist-like,可选

已解析 XML 数据的 DataFrame 的列名。使用此参数重命名原始元素名称并区分相同命名的元素。

encodingstr,可选,默认“utf-8”

XML 文档的编码。

parser{‘lxml’,'etree'},默认 ‘lxml’

用于检索数据的解析器模块。仅支持 ‘lxml’ and ‘etree’。 ‘lxml’ 支持更复杂的 XPath 搜索和使用 XSLT 样式表的能力。

stylesheetstr,路径对象或file-like对象

URL、file-like 对象或包含 XSLT 脚本的原始字符串。该样式表应该扁平化复杂的、深度嵌套的 XML 文档,以便于解析。要使用此函数,您必须安装 lxml 模块并将 ‘lxml’ 指定为 parserxpath 必须引用在 XSLT 转换后生成的转换后的 XML 文档的节点,而不是原始 XML 文档。当前仅支持 XSLT 1.0 脚本,不支持更高版本。

compressionstr 或 dict,默认 ‘infer’

用于on-disk 数据的即时解压缩。如果 ‘infer’ 和 ‘path_or_buffer’ 是 path-like,则从以下扩展名检测压缩:'.gz'、'.bz2'、'.zip'、'.xz' 或 '.zst'(否则不压缩)。如果使用‘zip’,ZIP 文件必须只包含一个要读入的数据文件。设置为None无需减压。也可以是带键的字典'method'设置为 { 之一'zip','gzip','bz2','zstd'} 和其他键值对被转发到zipfile.ZipFile,gzip.GzipFile,bz2.BZ2File, 或者zstandard.ZstdDecompressor, 分别。例如,可以使用自定义压缩字典为 Zstandard 解压缩传递以下内容:compression={'method':'zstd', 'dict_data':my_compression_dict}.

storage_options字典,可选

对特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对作为标头选项转发到 urllib。对于其他 URL(例如以 “s3://” 和 “gcs://” 开头),键值对被转发到 fsspec 。有关详细信息,请参阅fsspecurllib

返回

df

一个 DataFrame 。

注意

此方法最适合导入以下格式的浅 XML 文档,该格式非常适合 DataFrame 的 two-dimensions(逐列)。

<root>
    <row>
      <column1>data</column1>
      <column2>data</column2>
      <column3>data</column3>
      ...
   </row>
   <row>
      ...
   </row>
   ...
</root>

作为一种文件格式,只要符合 W3C 规范,XML 文档可以以任何方式设计,包括元素和属性的布局。因此,此方法是特定扁平设计而非所有可能的 XML 结构的便利处理程序。

但是,对于更复杂的 XML 文档,stylesheet 允许您使用 XSLT(一种特殊用途的语言)临时重新设计原始文档,以获得更扁平的版本以迁移到 DataFrame。

由于 XML 文档、xpath 或其他参数的问题,此函数将始终返回单个 DataFrame 或引发异常。

例子

>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <data xmlns="http://example.com">
...  <row>
...    <shape>square</shape>
...    <degrees>360</degrees>
...    <sides>4.0</sides>
...  </row>
...  <row>
...    <shape>circle</shape>
...    <degrees>360</degrees>
...    <sides/>
...  </row>
...  <row>
...    <shape>triangle</shape>
...    <degrees>180</degrees>
...    <sides>3.0</sides>
...  </row>
... </data>'''
>>> df = pd.read_xml(xml)
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0
>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <data>
...   <row shape="square" degrees="360" sides="4.0"/>
...   <row shape="circle" degrees="360"/>
...   <row shape="triangle" degrees="180" sides="3.0"/>
... </data>'''
>>> df = pd.read_xml(xml, xpath=".//row")
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0
>>> xml = '''<?xml version='1.0' encoding='utf-8'?>
... <doc:data xmlns:doc="https://example.com">
...   <doc:row>
...     <doc:shape>square</doc:shape>
...     <doc:degrees>360</doc:degrees>
...     <doc:sides>4.0</doc:sides>
...   </doc:row>
...   <doc:row>
...     <doc:shape>circle</doc:shape>
...     <doc:degrees>360</doc:degrees>
...     <doc:sides/>
...   </doc:row>
...   <doc:row>
...     <doc:shape>triangle</doc:shape>
...     <doc:degrees>180</doc:degrees>
...     <doc:sides>3.0</doc:sides>
...   </doc:row>
... </doc:data>'''
>>> df = pd.read_xml(xml,
...                  xpath="//doc:row",
...                  namespaces={"doc":"https://example.com"})
>>> df
      shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.read_xml。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。