通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧
Posted
技术标签:
【中文标题】通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧【英文标题】:Convert XML data to pandas dataframe via pyspark.sql.dataframe 【发布时间】:2019-03-15 15:21:57 【问题描述】:我的背景:长期 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)的数据框,每个响应一行。感谢在中间步骤中提供正确 Python 术语名称的有用提示!
【问题讨论】:
【参考方案1】:处理结构数组爆炸是您的答案。这是有关如何使用爆炸的链接https://hadoopist.wordpress.com/2016/05/16/how-to-handle-nested-dataarray-of-structures-or-multiple-explodes-in-sparkscala-and-pyspark/
【讨论】:
在 Stack Overflow 上不鼓励仅链接的答案,因为如果链接因任何原因消失,它们将变得无用。您应该edit您的答案,以在答案本身中包含与问题相关的最重要部分。以上是关于通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧的主要内容,如果未能解决你的问题,请参考以下文章
在 PySpark 的两个不同 pyspark.sql.dataframes 中的两列中创建一个 pyspark.sql.dataframe
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换