【发布时间】:2021-02-18 15:22:19
【问题描述】:
在我的 DataFrame 对象中,我有一个列 Foos,例如
<?xml version="1.0" encoding="utf-8"?> <foos> <foo id="123" X="58" Y="M" /> <foos id="456" X="29" Y="M" /> <foos id="789" X="44" Y="F" /> </foos>
每个<foo> 都有一个foo id、X 和Y 属性,我想为每个属性创建一个列。
如何解析 XML 以便为每个属性创建新列?这是否需要每个属性的 UDF,或者是否可以在一个函数中将所有三个提取到单独的列中?
到目前为止,我收到一个错误:
parsed = (lambda x: ET.fromstring(x).find('X').text)
udf = udf(parsed)
parsed_df = df.withColumn("X Column", udf("Foos"))
【问题讨论】:
-
您的 XML ET 查询错误。没有直接的孩子称为“X”。检查docs.python.org/3/library/xml.etree.elementtree.html 的正确用法。
标签: python apache-spark pyspark pyspark-dataframes