【问题标题】:python - decimal 'dot' to 'comma', use 2 decimalspython - 十进制'点'到'逗号',使用2个小数
【发布时间】:2021-04-20 12:50:09
【问题描述】:

我有这个数据,“VALOR”是浮点数:

Periodo VALOR
32021 1096.14
32021 3835.44
32021 2207.90
32021 389.10

我正在尝试将十进制“点”更改为“逗号”,这很好。

但是我需要保存2个小数,当我转换它时,它会在最后一个小数为0时消失。

df['VALOR'] = np.round(df['VALOR'], decimals=2).astype(str)
df['VALOR'] = df['VALOR'].str.replace('.',',')


df.head()
Periodo VALOR
32021 1096,14
32021 3835,44
32021 2207,9
32021 389,1

如何在这里获得两位小数?

也试过了:

pd.options.display.float_format = '{:,.2f}'.format

还有这个

df['VALOR'] = df['VALOR'].apply(lambda x: locale.format('%.2f', x))

他们都没有工作。我需要将小数转换为逗号并保留 2 位小数。

也许可以解决一些问题?喜欢将我的系统更改为 UTF-8?已经尝试了..但还没有。

问候,

谷内

【问题讨论】:

  • 如果要将其存储为数字类型,则不要执行任何操作。逗号是字符串 representation 问题。每当您需要以人类可读的格式(如十进制数字、二进制或十六进制或其他)输出时,您都应该处理它——那是 not担心存储数字。
  • 您好,感谢您的回复。我需要将其保存为字符串。所以我们没有系统之间的转换问题
  • 我认为这是一种误解。如果您将其存储为数字,那么 that 是您没有转换问题的保证。字符串因地区差异而模棱两可,数字则不然。
  • "你好,谢谢回复。我需要将它保存为字符串。所以我们没有系统之间的转换问题"否; “所以我们在系统之间没有转换问题”正是必须将其保存为作为数字的原因。让每个系统根据自己的规则在本地将其显示为字符串。根本不需要转换,除非您不遗余力地创建转换(这是错误的来源)。
  • 很抱歉不同意,但字符串是不可变的。这是我必须在联邦州数据库中上传的内容,并且需要以字符串的确切格式

标签: python pandas numpy etl


【解决方案1】:

尝试使用apply() 方法、replace() 方法和rstrip() 方法:

df['VALOR']=df['VALOR'].apply(lambda x: '{:.2f},'.format(x))
df['VALOR'] = df['VALOR'].str.replace('.',',',regex=True)
df['VALOR']=df['VALOR'].str.rstrip(',')

现在如果你打印df,你会得到:

    Periodo     VALOR
0   32021       1096,14
1   32021       3835,44
2   32021       2207,90
3   32021       389,10

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多