![](/img/trans.png)
[英]How to format a float with a comma as decimal separator in an f-string?
[英]How to have float format with comma as a decimal separator in Python Pandas?
我有一个带有货币数字字符串值的 csv,例如“R$2,444.99”,我读到需要为加载的 DataFrame 制作带有总和、groupbys 等的报告。
对于这些列,我尝试做的是创建一个自定义转换函数以将其加载为浮点数:
def convert_reais(value: str) -> float:
"""Transforms column value to calculable float."""
if value == "":
return 0.0
return float(value.replace("R$", "").replace(".", "").replace(",", "."))
然后我就可以正确加载列,并传递一个字典,这些列映射到这个函数:
converters = {column_net: convert_reais, column_gross: convert_reais}
source_df = pd.read_csv(filename, encoding=file_encoding, sep=";",
skiprows=1, converters=converters)
我的最后一个问题是我需要显示 sums 和 groupbys,显示“,”作为小数点分隔符(默认情况下为“.”。例如:
print(source_df.groupby([column_sort])[column_net].sum())
我找到了一种格式化结果的方法:
pd.options.display.float_format = "{:,.2f}".format
但是我没有找到将指向逗号的float_format
。
我还尝试使用以下方法加载 CSV:
thousands=".", decimal=","
但这没有区别,因为“R$”仍然将其作为字符串加载。
对我的方法有什么想法吗?
我找到了问题的解决方案。
只需按照以下步骤操作:
import locale
locale -a
locale.setlocale(locale.LC_ALL, yourlocale)
# ex. 'pt_BR.utf8'pd.set_option("float_format", locale.currency)
配置: pd.set_option("float_format", locale.currency)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.