spark example python apache-spark-sql spark-dataframe

python - example - pyspark dataframe



Tomar n filas de un marco de datos de chispa y pasar a toPandas() (2)

Tengo este codigo

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

Funciona bien, hace lo que necesita. Supongamos que solo quiero mostrar las primeras n filas, y luego llamar toPandas() para devolver un marco de datos de pandas. ¿Cómo lo hago? No puedo llamar a take(n) porque eso no devuelve un marco de datos y, por lo tanto, no puedo pasarlo a toPandas() .

Entonces, para decirlo de otra manera, ¿cómo puedo tomar las primeras n filas de un marco de datos y llamar toPandas() en el marco de datos resultante? No puedo pensar que esto sea difícil pero no puedo resolverlo.

Estoy usando Spark 1.6.0.


Puede obtener las primeras filas de Spark DataFrame con head y luego crear 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


Puede utilizar la función de limit(n) :

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

O:

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