min_por
Retorna o valor do parâmetro col que está associado ao valor mínimo do parâmetro ord. Essa função é frequentemente usada para encontrar o valor do parâmetro col correspondente ao menor valor do parâmetro ord dentro de cada grupo quando usada com groupBy(). A função não é determinística, portanto a ordem de saída pode ser diferente para valores de col iguais.
Sintaxe
from pyspark.sql import functions as sf
sf.min_by(col, ord)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| A coluna que representa os valores que serão retornados. Isso pode ser a instância da coluna ou o nome da coluna como strings. |
|
| A coluna que precisa ser minimizada. Isso pode ser a instância da coluna ou o nome da coluna como strings. |
Devoluções
pyspark.sql.Column: Objeto de coluna que representa o valor de col associado ao valor mínimo de ord.
Exemplos
Exemplo 1 : Usando min_by com groupBy
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Java", 2012, 20000), ("dotNET", 2012, 5000),
("dotNET", 2013, 48000), ("Java", 2013, 30000)],
schema=("course", "year", "earnings"))
df.groupby("course").agg(sf.min_by("year", "earnings")).sort("course").show()
+------+----------------------+
|course|min_by(year, earnings)|
+------+----------------------+
| Java| 2012|
|dotNET| 2012|
+------+----------------------+
Exemplo 2 : Usando min_by com diferentes tipos de dados
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Marketing", "Anna", 4), ("IT", "Bob", 2),
("IT", "Charlie", 3), ("Marketing", "David", 1)],
schema=("department", "name", "years_in_dept"))
df.groupby("department").agg(
sf.min_by("name", "years_in_dept")
).sort("department").show()
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| IT| Bob|
| Marketing| David|
+----------+---------------------------+
Exemplo 3 : Usando min_by onde ord possui múltiplos valores mínimos
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Consult", "Eva", 6), ("Finance", "Frank", 5),
("Finance", "George", 9), ("Consult", "Henry", 7)],
schema=("department", "name", "years_in_dept"))
df.groupby("department").agg(
sf.min_by("name", "years_in_dept")
).sort("department").show()
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| Consult| Eva|
| Finance| Frank|
+----------+---------------------------+