通过 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/
我的背景: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/