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()
之间存在显著差异?@jamiethead
返回前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