Python 从spark数据帧中获取n行并传递到toPandas()

Python 从spark数据帧中获取n行并传递到toPandas(),python,apache-spark-sql,spark-dataframe,Python,Apache Spark Sql,Spark Dataframe,我有以下代码: 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() 换句话说,我如何从一

我有以下代码:

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。

您可以使用
限制(n)
功能:

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


您可以使用获取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
试试看:

def showDf(df,count=None,percent=None,maxColumns=0):
如果(df==None):返回
进口大熊猫
从IPython.display导入显示
pandas.set_选项('display.encoding','UTF-8')
#熊猫数据帧
dfp=无
#maxColumns参数
如果(maxColumns>=0):
if(maxColumns==0):maxColumns=len(df.columns)
pandas.set_选项('display.max_columns',maxColumns)
#计数参数
如果(计数==无和百分比==无):计数=10#默认计数
如果(计数!=无):
计数=整数(计数)
if(count==0):count=df.count()
pandas.set_选项('display.max_rows',count)
数据帧(df.head(count),columns=df.columns)
显示器(dfp)
#百分比参数
elif(百分比!=无):
百分比=浮动(百分比)

如果(百分比>=0.0和百分比)在
head()
limit()
之间存在显著差异?@jamiet
head
返回前n行,如
take
,并将生成的火花数据帧限制到指定的数字。可能在这种情况下
limit
更合适。啊,简单。所以
limit()
是一种转换,
head()
是一种操作。谢谢Anton。假设重新运行数据帧是不安全的。limit(2)将始终返回相同的结果(它不是确定性的)。我尝试了这个,但在数小时的调试中遇到了问题。
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