Eu tenho este código:
import polars as pl
df = pl.DataFrame({'size': [34.2399, 1232.22, -479.1]})
df.with_columns(pl.format('{:,.2f}', pl.col('size')))
Mas falha:
ValueError - Traceback, line 3
2 df = pl.DataFrame({'size': [34.2399, 1232.22, -479.1]})
----> 3 df.with_columns(pl.format('{:,.2f}', pl.col('size')))
File polars\functions\as_datatype.py:718, in format(f_string, *args)
717 msg = "number of placeholders should equal the number of arguments"
--> 718 raise ValueError(msg)
ValueError: number of placeholders should equal the number of arguments
Como posso formatar uma coluna float
ou int
usando um especificador de formato como '{:,.2f}'
?
Conforme descrito por @mozway, strings de formato geral ainda não são suportadas como parte de
pl.format
. A solicitação de recursosprint
correspondente já contém uma implementação polars agradável da formatação estilo C (mais comum) .Se a eficiência não for um problema muito grande (por exemplo, em análise exploratória de dados), você pode simplesmente usar
pl.Expr.map_elements
e recorrer à solução ingênua do Python.pl.format
está reconhecendo literais{}
, diferentemente das f-strings do Python (se você executardf.with_columns(pl.format('{:,.2f}'))
verá que{:,.2f}
não foi alterado).Portanto, você não pode usar
pl.format
da maneira que deseja (conforme postado como comentário na pergunta, esta é uma solicitação de recurso ).Talvez você queira usar um dos métodos descritos aqui .
Código
pl.format
que mostra como funciona, ele simplesmente divide as strings em{}
(f_string.split("{}")
) e as une novamente com as expressões intermediárias: