Las expresiones le ganan a map_elements en Python
map_elements cae a Python por fila: correcto, pero es el camino lento.
import polars as pl
tabla = pl.DataFrame({"tpm": [104, 88, 96]})
lento = tabla.with_columns(
pl.col("tpm").map_elements(lambda n: n * 2, return_dtype=pl.Int64)
.alias("doubled_python"))
rapido = tabla.with_columns((pl.col("tpm") * 2).alias("doubled_expr"))
print(lento)
print(rapido)
print(lento["doubled_python"].to_list() == rapido["doubled_expr"].to_list())
Cómo funciona
- Una expresión se queda en Rust y se paraleliza.
map_elementsnecesita un dtype de retorno para seguir tipada.- Recurre a él solo cuando no existe una expresión.
Palabras clave y builtins usados aquí
aslambdaprint
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 364
- Tokens
- 120
- Ritmo de tres estrellas
- 115 tpm
Al ritmo de tres estrellas de 115 tokens por minuto, este intento toma unos 63 segundos.
Paso 4 de 4 en Lazy y SQL; paso 28 de 32 en Polars.