请翻译以下为中文:#

pandas.read_xml(path_or_buffer, *, xpath='./*', namespaces=None, elems_only=False, attrs_only=False, names=None, dtype=None, converters=None, parse_dates=None, encoding='utf-8', parser='lxml', stylesheet=None, iterparse=None, compression='infer', storage_options=None, dtype_backend=<no_default>)[源代码][源代码]#

将 XML 文档读取到一个 DataFrame 对象中。

Added in version 1.3.0.

参数:
path_or_buffer字符串, 路径对象, 或类文件对象

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

自 2.1.0 版本弃用: 传递 xml 字面字符串已被弃用。请将字面 xml 输入包裹在 io.StringIOio.BytesIO 中。

xpath : str, 可选, 默认 ‘./*’str, 可选, 默认 ‘./*’

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

命名空间dict, 可选

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

elems_onlybool, 可选, 默认 False

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

attrs_onlybool, 可选, 默认 False

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

名称类似列表的,可选的

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

dtype类型名称或列 -> 类型的字典,可选

数据的类型或列的类型。例如:{‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’} 使用 strobject 以及合适的 na_values 设置来保留并不解释数据类型。如果指定了转换器,它们将代替数据类型转换应用。

Added in version 1.5.0.

转换器dict, 可选

用于转换某些列中值的函数字典。键可以是整数或列标签。

Added in version 1.5.0.

parse_dates布尔值或整数或名称列表或列表的列表或字典,默认值为 False

解析索引或列到日期时间的标识符。行为如下:

  • 布尔值。如果为真 -> 尝试解析索引。

  • 整数列表或名称。例如,如果 [1, 2, 3] -> 尝试将第1、2、3列分别解析为单独的日期列。

  • 列表的列表。例如,如果 [[1, 3]] -> 合并第1列和第3列,并解析为一个单独的日期列。

  • 字典, 例如 {‘foo’ : [1, 3]} -> 将第1、3列解析为日期并调用结果为 ‘foo’

Added in version 1.5.0.

编码str, 可选, 默认 ‘utf-8’

XML 文档的编码。

解析器{‘lxml’,’etree’},默认 ‘lxml’

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

样式表str, 路径对象或类文件对象

一个 URL、类文件对象或包含 XSLT 脚本的字符串路径。此样式表应简化复杂、深度嵌套的 XML 文档,以便于解析。要使用此功能,您必须安装 lxml 模块,并将 ‘lxml’ 指定为 parserxpath 必须引用 XSLT 转换后生成的转换 XML 文档的节点,而不是原始 XML 文档的节点。目前仅支持 XSLT 1.0 脚本,不支持更高版本。

iterparsedict, 可选

在XML文档的iterparsing中要检索的节点或属性,作为字典,其中键是重复元素的名称,值是重复元素的后代元素或属性名称的列表。注意:如果使用此选项,它将替换 xpath 解析,并且与 xpath 不同,后代不需要相互关联,但可以在文档中的任何位置存在于重复元素下。这种内存高效的方法应用于非常大的XML文件(500MB、1GB或5GB+)。例如,{"row_element": ["child_elem", "attr", "grandchild_elem"]}

Added in version 1.5.0.

压缩str 或 dict,默认 ‘infer’

用于即时解压磁盘数据。如果 ‘infer’ 并且 ‘path_or_buffer’ 是类路径,则从以下扩展名检测压缩:’.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, ‘.zst’, ‘.tar’, ‘.tar.gz’, ‘.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。如果使用 ‘zip’ 或 ‘tar’,ZIP 文件必须仅包含一个要读取的数据文件。设置为 None 表示不解压。也可以是一个字典,键 'method' 设置为 {'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar'} 之一,其他键值对将转发给 zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdDecompressor, lzma.LZMAFiletarfile.TarFile,分别。例如,以下内容可以传递用于使用自定义压缩字典的 Zstandard 解压:compression={'method': 'zstd', 'dict_data': my_compression_dict}

Added in version 1.5.0: 增加了对 .tar 文件的支持。

在 1.4.0 版本发生变更: Zstandard 支持。

storage_optionsdict, 可选

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

dtype_backend{‘numpy_nullable’, ‘pyarrow’}

应用于结果 DataFrame 的后端数据类型(仍在实验中)。如果未指定,默认行为是不使用可空数据类型。如果指定,行为如下:

Added in version 2.0.

返回:
df

一个 DataFrame。

参见

read_json

将 JSON 字符串转换为 pandas 对象。

read_html

将HTML表格读取到一个DataFrame对象列表中。

备注

这种方法最适合导入以下格式的浅层XML文档,这是``DataFrame``(行和列)两个维度的理想匹配。:

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

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

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

这个函数将 总是 返回一个单一的 DataFrame 或者由于XML文档、xpath 或其他参数的问题而引发异常。

有关使用此方法将XML文件解析为DataFrame的更多信息,请参阅文档IO部分中的 read_xml 文档

例子

>>> from io import StringIO
>>> 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(StringIO(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(StringIO(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(
...     StringIO(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
>>> xml_data = '''
...         <data>
...            <row>
...               <index>0</index>
...               <a>1</a>
...               <b>2.5</b>
...               <c>True</c>
...               <d>a</d>
...               <e>2019-12-31 00:00:00</e>
...            </row>
...            <row>
...               <index>1</index>
...               <b>4.5</b>
...               <c>False</c>
...               <d>b</d>
...               <e>2019-12-31 00:00:00</e>
...            </row>
...         </data>
...         '''
>>> df = pd.read_xml(
...     StringIO(xml_data), dtype_backend="numpy_nullable", parse_dates=["e"]
... )
>>> df
   index     a    b      c  d          e
0      0     1  2.5   True  a 2019-12-31
1      1  <NA>  4.5  False  b 2019-12-31