我有这个代码:
import polars as pl
df = pl.DataFrame({'size': [34.2399, 1232.22, -479.1]})
df.with_columns(pl.format('{:,.2f}', pl.col('size')))
但失败了:
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
如何使用类似格式说明符来格式化float
或列?int
'{:,.2f}'
正如 @mozway 所概述的,通用格式字符串尚不支持
pl.format
。相应的功能请求已经包含一个 (最常见的) C 样式格式的很好的极点实现sprint
。如果效率不是什么大问题(例如在探索性数据分析中),您可以简单地使用
pl.Expr.map_elements
并回到简单的 Python 解决方案。pl.format
正在识别文字{}
,与 python 的 f 字符串不同(如果你运行,df.with_columns(pl.format('{:,.2f}'))
你会看到它{:,.2f}
保持不变)。因此您无法按照
pl.format
自己想要的方式使用(如对问题的评论所述,这是一个功能请求)。您可能想要使用这里描述的其中一种方法。
代码展示了它是如何工作的,它只是在( )
pl.format
上分割字符串并将其与中间的表达式连接起来:{}
f_string.split("{}")