python apache-spark pyspark apache-spark-sql

python - Crear un marco de datos de una sola fila a partir de la lista de la lista PySpark



apache-spark apache-spark-sql (3)

Creo que es útil pensar en el argumento de createDataFrame() como una lista de tuplas donde cada entrada en la lista corresponde a una fila en el DataFrame y cada elemento de la tupla corresponde a una columna.

Puede obtener el resultado deseado haciendo que cada elemento de la lista sea una tupla:

data = [([1.1, 1.2],), ([1.3, 1.4],), ([1.5, 1.6],)] dataframe = sqlCtx.createDataFrame(data, [''features'']) dataframe.show() #+----------+ #| features| #+----------+ #|[1.1, 1.2]| #|[1.3, 1.4]| #|[1.5, 1.6]| #+----------+

O si cambiar la fuente es engorroso, puede hacer lo mismo:

data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]] dataframe = sqlCtx.createDataFrame(map(lambda x: (x, ), data), [''features'']) dataframe.show() #+----------+ #| features| #+----------+ #|[1.1, 1.2]| #|[1.3, 1.4]| #|[1.5, 1.6]| #+----------+

Tengo datos como este data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]] Quiero crear un marco de datos PySpark

Yo ya uso

dataframe = SQLContext.createDataFrame(data, [''features''])

pero siempre consigo

+--------+---+ |features| _2| +--------+---+ | 1.1|1.2| | 1.3|1.4| | 1.5|1.6| +--------+---+

¿Cómo puedo obtener el resultado como a continuación?

+----------+ |features | +----------+ |[1.1, 1.2]| |[1.3, 1.4]| |[1.5, 1.6]| +----------+


Debería usar la función Vector Assembler, desde su código, supongo que está haciendo esto para entrenar un modelo de aprendizaje automático, y el ensamblador vectorial funciona mejor para ese caso. También puede agregar el ensamblador en la tubería.

assemble_feature=VectorAssembler(inputCol=data.columns,outputCol=''features'') pipeline=Pipeline(stages=[assemble_feature]) pipeline.fit(data).transform(data)


Necesita una función de map para convertir las tuples en array y usarla en createDataFrame

dataframe = sqlContext.createDataFrame(sc.parallelize(data).map(lambda x: [x]), [''features''])

Deberías obtener lo que desees

+----------+ | features| +----------+ |[1.1, 1.2]| |[1.3, 1.4]| |[1.5, 1.6]| +----------+