用法:
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_buffer:str、路径对象或 file-like 对象
字符串、路径对象(实现
os.PathLike[str]
)或实现read()
函数的 file-like 对象。该字符串可以是任何有效的 XML 字符串或路径。该字符串还可以是 URL。有效的 URL 方案包括 http、ftp、s3 和文件。- xpath:str,可选,默认“./*”
解析所需节点集以迁移到 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
处的属性。默认情况下,返回所有属性。- names:list-like,可选
已解析 XML 数据的 DataFrame 的列名。使用此参数重命名原始元素名称并区分相同命名的元素。
- encoding:str,可选,默认“utf-8”
XML 文档的编码。
- parser:{‘lxml’,'etree'},默认 ‘lxml’
用于检索数据的解析器模块。仅支持 ‘lxml’ and ‘etree’。 ‘lxml’ 支持更复杂的 XPath 搜索和使用 XSLT 样式表的能力。
- stylesheet:str,路径对象或file-like对象
URL、file-like 对象或包含 XSLT 脚本的原始字符串。该样式表应该扁平化复杂的、深度嵌套的 XML 文档,以便于解析。要使用此函数,您必须安装
lxml
模块并将 ‘lxml’ 指定为parser
。xpath
必须引用在 XSLT 转换后生成的转换后的 XML 文档的节点,而不是原始 XML 文档。当前仅支持 XSLT 1.0 脚本,不支持更高版本。- compression:str 或 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
。有关详细信息,请参阅fsspec
和urllib
。
- 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
相关用法
- Python pandas.read_pickle用法及代码示例
- Python pandas.read_hdf用法及代码示例
- Python pandas.read_table用法及代码示例
- Python pandas.read_sql_table用法及代码示例
- Python pandas.read_excel用法及代码示例
- Python pandas.read_fwf用法及代码示例
- Python pandas.read_stata用法及代码示例
- Python pandas.read_sql用法及代码示例
- Python pandas.read_csv用法及代码示例
- Python pandas.read_html用法及代码示例
- Python pandas.read_json用法及代码示例
- Python pandas.arrays.IntervalArray.is_empty用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.Index.value_counts用法及代码示例
- Python pandas.DatetimeTZDtype用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.read_xml。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。