通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

Convert XML data to pandas dataframe via pyspark.sql.dataframe

我的背景:SAS 和 R 的长期用户,试图找出如何使用 Python 和 Spark 在 Azure Databricks 中做一些基本的事情。抱歉,下面缺少可重现的示例;我不确定如何创建这样的一个。

我正在尝试从一个复杂的 XML 文件中读取数据。我已经达到了这一点,我有一个 pyspark.sql.dataframe(称之为 xml1),安排如下:

RESPONSE:array
  element:array
    element:struct
      VALUE:string
      VARNAME:string

xml1 数据框如下所示:

[Row(RESPONSE=[[Row(VALUE='No', VARNAME='PROV_U'), Row(VALUE='Included', VARNAME='ADJSAMP'), Row(VALUE='65', VARNAME='AGE'), ...

当我使用 xml2=xml1.toPandas() 时,我得到这个:

                      RESPONSE
0   [[(No, PROV_U), (Included, ADJSAMP), (65, AGE)...
1   [[(Included, ADJSAMP), (71, AGE), ...
...

至少,我想将其转换为具有两列 VARNAME 和 VALUE 的 Pandas 数据框。更好的解决方案是使用 VARNAME 值(例如 PROV_U、ADJSAMP、AGE)命名列的数据框,每个 RESPONSE 一行。感谢中间步骤中带有正确 Python 术语名称的有用提示!

处理结构数组爆炸是你的答案。这里是 link 关于如何使用 explode https://hadoopist.wordpress.com/2016/05/16/how-to-handle-nested-dataarray-of-structures-or-multiple-explodes-in-sparkscala-and-pyspark/