用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。