Estou tentando truncar números de ponto flutuante em meu DataFrame para um número desejado de casas decimais. Descobri que isso pode ser feito usando Pandas e NumPy aqui , mas também vi que pode ser possível com polars.Config.set_float_precision
.
Abaixo está minha abordagem atual, mas acho que posso tomar medidas extras.
import polars as pl
data = {
"name": ["Alice", "Bob", "Charlie"],
"grade": [90.23456, 80.98765, 85.12345],
}
df = pl.DataFrame(data)
df.with_columns(
# Convert to string
pl.col("grade").map_elements(lambda x: f"{x:.5f}", return_dtype=pl.String).alias("formatted_grade")
).with_columns(
# Slice to get my desired decimals
pl.col("formatted_grade").str.slice(0, length = 4)
).with_columns(
# Convert it again to Float
pl.col("formatted_grade").cast(pl.Float64)
)
Você pode usar a integração Polars - Numpy assim:
Saída:
Código completo: