繁体   English   中英

python - 如何在Python Pandas中使用逗号作为小数点分隔符的浮点格式?

[英]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$”仍然将其作为字符串加载。

对我的方法有什么想法吗?

我找到了问题的解决方案。

只需按照以下步骤操作:

  1. 导入内置语言环境模块: import locale
  2. 在您的 shell 中,从列表中选择所需和已安装的区域设置,并使用您的货币格式: locale -a
  3. 在 python 上设置你的脚本语言环境: locale.setlocale(locale.LC_ALL, yourlocale) # ex. 'pt_BR.utf8'
  4. 更改用于可视化浮点数的pd.set_option("float_format", locale.currency)配置: pd.set_option("float_format", locale.currency)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM