如何在IPython中将Spark RDD转换为pandas dataframe?

37

我有一个RDD,想把它转换成pandasdataframe。我知道要将RDD转换为普通的dataframe,我们可以这样做:

df = rdd1.toDF()

但我想将RDD转换为pandasdataframe而不是普通的dataframe,我该怎么做?

2个回答

47

您可以使用函数toPandas()

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

仅当安装并可用Pandas时才可用。

>>> df.toPandas()  
   age   name
0    2  Alice
1    5    Bob

1
toDF()和toPandas()有什么区别? - jtlz2
@jezrael,如何将spark df的前10行转换为pandas df - Pyd

17
你需要使用Spark DataFrame作为RDD和所需的Pandas DataFrame之间的中介步骤。
例如,假设我有一个文本文件flights.csv已经被读入到了一个RDD中:
flights = sc.textFile('flights.csv')

您可以检查类型:

type(flights)
<class 'pyspark.rdd.RDD'>

如果你只是在RDD上使用toPandas(),它不会起作用。根据你的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()

您可以检查类型:

type(pdsDF)
<class 'pandas.core.frame.DataFrame'>

3
我认为pdsDF = sparkDF.toPandas缺少了()来实际调用方法。应该改为:pdsDF = sparkDF.toPandas() - learn2day
toDF()和toPandas()有什么区别? - jtlz2
toDF()将RDD转换为Spark DataFrame,而toPandas()将Spark DataFrame转换为Pandas DataFrame。这两种类型的DataFrame是不同的。 - RKD314

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接