如何在ipython中将Spark RDD转换为pandas数据帧?

use*_*197 32 python ipython pandas rdd pyspark

我有一个RDD,我想将其转换为pandas dataframe.我知道要转换,我们可以做到RDD正常dataframe

df = rdd1.toDF()
Run Code Online (Sandbox Code Playgroud)

但我想转换RDDpandas dataframe而不是正常dataframe.我该怎么做?

jez*_*ael 43

你可以使用功能toPandas():

将此DataFrame的内容作为Pandas pandas.DataFrame返回.

这仅在Pandas已安装且可用时才可用.

>>> df.toPandas()  
   age   name
0    2  Alice
1    5    Bob
Run Code Online (Sandbox Code Playgroud)


RKD*_*314 14

您必须使用Spark DataFrame作为RDD和所需Pandas DataFrame之间的中间步骤.

例如,假设我有一个flights.csv已经读入RDD 的文本文件:

flights = sc.textFile('flights.csv')
Run Code Online (Sandbox Code Playgroud)

你可以查看类型:

type(flights)
<class 'pyspark.rdd.RDD'>
Run Code Online (Sandbox Code Playgroud)

如果您只是toPandas()在RDD上使用它,它将无法正常工作.根据RDD中对象的格式,可能需要进行一些处理才能首先转到Spark DataFrame.对于此示例,此代码执行以下操作:

# RDD to Spark DataFrame
sparkDF = flights.map(lambda x: str(x)).map(lambda w: w.split(',')).toDF()

#Spark DataFrame to Pandas DataFrame
pdsDF = sparkDF.toPandas()
Run Code Online (Sandbox Code Playgroud)

你可以查看类型:

type(pdsDF)
<class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)

  • 我认为`pdsDF = sparkDF.toPandas`缺少实际调用该方法的().它应该是:`pdsDF = sparkDF.toPandas()` (3认同)