我有这个代码:
l = [('Alice', 1),('Jim',2),('Sandra',3)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df.withColumn('age2', df.age + 2).toPandas()
工作正常,做它需要的东西。假设我只想显示前n行,然后调用toPandas()
返回pandas数据帧。我该怎么做?我不能调用take(n)
,因为它不会返回数据帧,因此我无法将其传递给toPandas()
。
换句话说,如何从数据帧中获取前n行并在结果数据帧上调用toPandas()
?想不到这很难但我无法弄清楚。
我正在使用Spark 1.6.0。
你可以使用limit(n)
函数:
l = [('Alice', 1),('Jim',2),('Sandra',3)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df.limit(2).withColumn('age2', df.age + 2).toPandas()
要么:
l = [('Alice', 1),('Jim',2),('Sandra',3)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df.withColumn('age2', df.age + 2).limit(2).toPandas()
您可以使用head获取Spark DataFrame的第一行,然后创建Pandas DataFrame:
l = [('Alice', 1),('Jim',2),('Sandra',3)]
df = sqlContext.createDataFrame(l, ['name', 'age'])
df_pandas = pd.DataFrame(df.head(3), columns=df.columns)
In [4]: df_pandas
Out[4]:
name age
0 Alice 1
1 Jim 2
2 Sandra 3