Pyspark:将 pyspark.sql.row 转换为 Dataframe

Posted

技术标签:

【中文标题】Pyspark:将 pyspark.sql.row 转换为 Dataframe【英文标题】:Pyspark: Convert pyspark.sql.row into Dataframe 【发布时间】:2018-06-13 07:33:46 【问题描述】:

我在 pyspark 中有以下行。我想基本上将它与熊猫数据框合并。

Row(Banked_Date_Calc__c=0   NaN
Name: Banked_Date_Calc__c, dtype: float64, CloseDate=0    2018-06-13T00:00:00.000Z
Name: CloseDate, dtype: object, CourseGEV__c=0    2990
Name: CourseGEV__c, dtype: int64, Id=0    0060h0000169NWLAA2
Name: Id, dtype: object, OwnerId=0    0050L000008Z30mQAC
Name: OwnerId, dtype: object, timestamp=0   2018-06-13 17:02:30.017566
Name: timestamp, dtype: datetime64[ns])

现在我收到错误,当我将上面的行放入 pd.DataFrame(msg) 时,DataFrame 没有被正确调用

msg = Row(.....) #Row is from above
pd.DataFrame(msg)

【问题讨论】:

您能否详细说明您的代码“不起作用”的原因?你期待什么,实际发生了什么?如果您遇到异常/错误,请发布full exception details。请edit这些详细信息,否则我们可能无法提供帮助。 我收到 ValueError: DataFrame 构造函数未正确调用!当我使用 pd.DataFrame(msg) 时,msg 就是我上面提到的那一行 在不说明原因的情况下投反对票是不礼貌的。但世界也是。 【参考方案1】:

您不能将 pyspark 行直接传递给 Pandas Dataframe 构造函数。您可以使用中间字典来完成。

row_d = Row(...).asDict()
pd_df = pd.DataFrame.from_dict(row_d)

【讨论】:

以上是关于Pyspark:将 pyspark.sql.row 转换为 Dataframe的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark SQL 时无法将获取 B 转换为 java.lang.String

从 Row 创建 DataFrame 会导致“推断架构问题”

Pyspark:将 sql 查询转换为 pyspark?

PYSPARK:如何将带有多个 case 语句的 SQL 查询转换为 Pyspark/Pyspark-SQL?

PySpark:将 PythonRDD 附加/合并到 PySpark 数据帧

PySpark:将字典数据附加到 PySpark DataFrame