pandas.DataFrame.to_xml#

DataFrame.to_xml(path_or_buffer=None, *, index=True, root_name='data', row_name='row', na_rep=None, attr_cols=None, elem_cols=None, namespaces=None, prefix=None, encoding='utf-8', xml_declaration=True, pretty_print=True, parser='lxml', stylesheet=None, compression='infer', storage_options=None)[源代码][源代码]#

将 DataFrame 渲染为 XML 文档。

Added in version 1.3.0.

参数:
path_or_bufferstr, 路径对象, 类文件对象, 或 None, 默认 None

字符串、路径对象(实现 os.PathLike[str])或实现 write() 函数的类文件对象。如果为 None,结果将作为字符串返回。

索引bool, 默认为 True

是否在XML文档中包含索引。

root_namestr, 默认 ‘data’

XML 文档中根元素的名称。

row_namestr, 默认 ‘row’

XML 文档中行元素的名称。

na_repstr, 可选

缺失数据表示。

attr_cols类似列表的,可选的

要在行元素中写入的列列表。层次列将以下划线分隔不同级别的方式展平。

elem_cols类似列表的,可选的

要在行元素中作为子元素写入的列列表。默认情况下,所有列都作为行元素的子元素输出。层次列将以下划线分隔不同级别的方式展平。

命名空间dict, 可选

所有命名空间应在根元素中定义。字典的键应为前缀名称,字典的值对应URI。默认命名空间应使用空字符串键。例如,:

namespaces = {"": "https://example.com"}
前缀str, 可选

在文档中用于每个元素和/或属性的命名空间前缀。这应该是 namespaces 字典中的一个键。

编码str, 默认 ‘utf-8’

生成文档的编码。

xml_declarationbool, 默认为 True

是否在文档开始处包含XML声明。

pretty_printbool, 默认为 True

输出是否应以缩进和换行进行美化打印。

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

用于构建树的解析器模块。仅支持 ‘lxml’ 和 ‘etree’。使用 ‘lxml’ 时,支持使用 XSLT 样式表。

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

一个 URL、类文件对象或包含 XSLT 脚本的原始字符串,用于转换原始 XML 输出。脚本应使用原始输出中的元素和属性布局。此参数需要 lxml 已安装。目前仅支持 XSLT 1.0 脚本,不支持更高版本。

压缩str 或 dict,默认 ‘infer’

用于实时压缩输出数据。如果 ‘infer’ 并且 ‘path_or_buffer’ 是类路径,则从以下扩展名检测压缩:’.gz’, ‘.bz2’, ‘.zip’, ‘.xz’, ‘.zst’, ‘.tar’, ‘.tar.gz’, ‘.tar.xz’ 或 ‘.tar.bz2’(否则不压缩)。设置为 None 表示不压缩。也可以是一个字典,键 'method' 设置为 {'zip', 'gzip', 'bz2', 'zstd', 'xz', 'tar'} 之一,其他键值对将转发给 zipfile.ZipFile, gzip.GzipFile, bz2.BZ2File, zstandard.ZstdCompressor, lzma.LZMAFiletarfile.TarFile,分别。例如,以下内容可以传递以实现更快的压缩并创建可复现的 gzip 存档:compression={'method': 'gzip', 'compresslevel': 1, 'mtime': 1}

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 了解更多详情,关于存储选项的更多示例请参考 这里

返回:
无或字符串

如果 io 是 None,则返回生成的 XML 格式作为字符串。否则返回 None。

参见

to_json

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

to_html

将 DataFrame 转换为 html。

例子

>>> df = pd.DataFrame(
...     [["square", 360, 4], ["circle", 360, np.nan], ["triangle", 180, 3]],
...     columns=["shape", "degrees", "sides"],
... )
>>> df.to_xml()  
<?xml version='1.0' encoding='utf-8'?>
<data>
  <row>
    <index>0</index>
    <shape>square</shape>
    <degrees>360</degrees>
    <sides>4.0</sides>
  </row>
  <row>
    <index>1</index>
    <shape>circle</shape>
    <degrees>360</degrees>
    <sides/>
  </row>
  <row>
    <index>2</index>
    <shape>triangle</shape>
    <degrees>180</degrees>
    <sides>3.0</sides>
  </row>
</data>
>>> df.to_xml(
...     attr_cols=["index", "shape", "degrees", "sides"]
... )  
<?xml version='1.0' encoding='utf-8'?>
<data>
  <row index="0" shape="square" degrees="360" sides="4.0"/>
  <row index="1" shape="circle" degrees="360"/>
  <row index="2" shape="triangle" degrees="180" sides="3.0"/>
</data>
>>> df.to_xml(
...     namespaces={"doc": "https://example.com"}, prefix="doc"
... )  
<?xml version='1.0' encoding='utf-8'?>
<doc:data xmlns:doc="https://example.com">
  <doc:row>
    <doc:index>0</doc:index>
    <doc:shape>square</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides>4.0</doc:sides>
  </doc:row>
  <doc:row>
    <doc:index>1</doc:index>
    <doc:shape>circle</doc:shape>
    <doc:degrees>360</doc:degrees>
    <doc:sides/>
  </doc:row>
  <doc:row>
    <doc:index>2</doc:index>
    <doc:shape>triangle</doc:shape>
    <doc:degrees>180</doc:degrees>
    <doc:sides>3.0</doc:sides>
  </doc:row>
</doc:data>