anulación de dinamización

Despivote un DataFrame de formato ancho a formato largo, dejando opcionalmente las columnas de identificador establecidas. Esta es la inversa a groupBy(...).pivot(...).agg(...), excepto para la agregación, que no se puede invertir.

Agregado en Databricks Runtime 11.1

Sintaxis

unpivot(ids: Union["ColumnOrName", List["ColumnOrName"], Tuple["ColumnOrName", ...]], values: Optional[Union["ColumnOrName", List["ColumnOrName"], Tuple["ColumnOrName", ...]]], variableColumnName: str, valueColumnName: str)

Parámetros

Parámetro Tipo Descripción
ids str, Columna, tupla, lista Columnas que se van a usar como identificadores. Puede ser un nombre de columna o columna, o una lista o tupla para varias columnas.
values str, Columna, tupla, lista, opcional Columnas que se van a despivotar. Puede ser un nombre de columna o columna, o una lista o tupla para varias columnas. Si se especifica, no debe estar vacío. Si no se especifica, usa todas las columnas que no están establecidas como ids.
variableColumnName str Nombre de la columna de variable.
valueColumnName str Nombre de la columna de valor.

Devoluciones

DataFrame: DataFrame sin dinamizar.

Notas

Soporta Spark Connect.

Ejemplos

df = spark.createDataFrame(
    [(1, 11, 1.1), (2, 12, 1.2)],
    ["id", "int", "double"],
)
df.show()
# +---+---+------+
# | id|int|double|
# +---+---+------+
# |  1| 11|   1.1|
# |  2| 12|   1.2|
# +---+---+------+

from pyspark.sql import functions as sf
df.unpivot(
    "id", ["int", "double"], "var", "val"
).sort("id", sf.desc("var")).show()
# +---+------+----+
# | id|   var| val|
# +---+------+----+
# |  1|   int|11.0|
# |  1|double| 1.1|
# |  2|   int|12.0|
# |  2|double| 1.2|
# +---+------+----+