2016-11-10 175 views
6

我有这样的代码:取N行,并传递给toPandas()

l = [('Alice', 1),('Jim',2),('Sandra',3)] 
df = sqlContext.createDataFrame(l, ['name', 'age']) 
df.withColumn('age2', df.age + 2).toPandas() 

做工精细,做什么需要的地方。假设我只想显示前n行,然后调用toPandas()来返回一个熊猫数据帧。我该怎么做?我不能拨打take(n),因为这不会返回数据帧,因此我无法将其传递给toPandas()

换句话说,如何从数据框中获取前n行并在结果数据框上调用toPandas()?不能认为这很难,但我无法弄清楚。

我正在使用Spark 1.6.0。

回答

11

您可以使用限制(n)函数:

l = [('Alice', 1),('Jim',2),('Sandra',3)] 
df = sqlContext.createDataFrame(l, ['name', 'age']) 
df.limit(2).withColumn('age2', df.age + 2).toPandas() 

OR

l = [('Alice', 1),('Jim',2),('Sandra',3)] 
df = sqlContext.createDataFrame(l, ['name', 'age']) 
df.withColumn('age2', df.age + 2).limit(2).toPandas() 
+0

看我知道这很容易:)非常感谢。 – jamiet

+0

欢迎您! – Neo

0

你可以得到星火数据帧的第一行与head,然后创建熊猫据帧:

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 
+0

'head()'和'limit()'之间有明显的区别吗? – jamiet

+1

@jamiet'head'返回n行,比如'take'和['limit'](https://spark.apache.org/docs/1.6.1/api/python/pyspark.sql.html#pyspark。 sql.DataFrame.limit)将Spark Dataframe限制为指定的数字。在这种情况下,“极限”可能更合适。 –

+2

[limit'和'head'之间的区别](https://stackoverflow.com/a/34206635/4542359) –

相关问题