Saltar al contenido

¿Cómo cambiar la posición de una columna en un marco de datos Spark?

Si encuentras algo que te causa duda puedes dejarlo en la sección de comentarios y haremos todo lo posible de ayudarte lo más rápido posible.

Solución:

Puede obtener los nombres de las columnas, reordenarlos como desee y luego usar select en el DataFrame original para obtener uno nuevo con este nuevo orden:

val columns: Array[String] = dataFrame.columns
val reorderedColumnNames: Array[String] = ??? // do the reordering you want
val result: DataFrame = dataFrame.select(reorderedColumnNames.head, reorderedColumnNames.tail: _*)

La biblioteca Spark-Daria tiene una reorderColumns método que facilita el reordenamiento de las columnas en un DataFrame.

import com.github.mrpowers.spark.daria.sql.DataFrameExt._

val actualDF = sourceDF.reorderColumns(
  Seq("field1", "field3", "field2")
)

El reorderColumns El método utiliza la solución de @Rockie Yang bajo el capó.

Si desea obtener el orden de las columnas de df1 para igualar el orden de la columna de df2, algo como esto debería funcionar mejor que codificar todas las columnas:

df1.reorderColumns(df2.columns)

La biblioteca spark-daria también define un sortColumns transformación para ordenar columnas en orden ascendente o descendente (si no desea especificar todas las columnas en una secuencia).

import com.github.mrpowers.spark.daria.sql.transformations._

df.transform(sortColumns("asc"))

Como han comentado otros, tengo curiosidad por saber por qué haría esto, ya que el orden no es relevante cuando puede consultar las columnas por sus nombres.

De todos modos, usar una selección debería dar la sensación de que las columnas se han movido en la descripción del esquema:

val data = Seq(
  ("a",       "hello", 1),
  ("b",       "spark", 2)
)
.toDF("field1", "field2", "field3")

data
 .show()

data
 .select("field3", "field2", "field1")
 .show()

Sección de Reseñas y Valoraciones

Recuerda que tienes la capacidad de añadir una valoración certera si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *