如何在 Python Pandas 中使用逗号作为小数分隔符的浮点格式?
Posted
技术标签:
【中文标题】如何在 Python Pandas 中使用逗号作为小数分隔符的浮点格式?【英文标题】:How to have float format with comma as a decimal separator in Python Pandas? 【发布时间】:2019-12-02 16:45:16 【问题描述】:我有一个 csv,其中包含货币数字的字符串值,例如“R$2,444.99”,我读到需要为加载的 DataFrame 制作包含 sum、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$”仍然让它作为字符串加载。
对我的方法有什么想法吗?
【问题讨论】:
你应该用thousands='.', decimal=','
阅读csv。
@QuangHoang 我已经更新了问题..但这没有任何区别。
【参考方案1】:
我找到了问题的解决方案。
只需按照以下步骤操作:
-
导入内置语言环境模块:
import locale
在您的 shell 中,使用您的货币格式从列表中选择所需并安装的语言环境:locale -a
在 python 上设置您的脚本语言环境:locale.setlocale(locale.LC_ALL, yourlocale)
# ex. 'pt_BR.utf8'
更改 pandas 配置以显示浮动:pd.set_option("float_format", locale.currency)
【讨论】:
以上是关于如何在 Python Pandas 中使用逗号作为小数分隔符的浮点格式?的主要内容,如果未能解决你的问题,请参考以下文章
将整列整数转换为字符串,在 Pandas 中使用逗号分隔千位
Python/Pandas 如何在字符串中的每个数字后加上逗号
Python pandas-datareader 在逗号上失败
Python:从列表中删除逗号,以便我可以使用 pandas 将数据导入 Excel 中的单独单元格