Expresiones de ventana en Python
over calcula por grupo pero conserva cada fila, cosa que agg no hace.
import polars as pl
tabla = pl.DataFrame({
"lang": ["python", "python", "rust", "rust"],
"tpm": [104, 91, 98, 88],
})
clasificado = tabla.with_columns(
pl.col("tpm").mean().over("lang").alias("group_mean"),
(pl.col("tpm") / pl.col("tpm").sum().over("lang")).round(3).alias("share"),
pl.col("tpm").rank(descending=True).over("lang").alias("rank_in_group"),
)
print(clasificado)
Cómo funciona
expr.over(key)propaga el valor del grupo de vuelta a sus filas.- Así se obtiene la proporción del total del grupo.
rank().over(...)numera las filas dentro de su grupo.
Palabras clave y builtins usados aquí
asprint
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 378
- Tokens
- 160
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 87 segundos.
Paso 3 de 3 en Agregación; paso 14 de 32 en Polars.