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