【问题标题】:How to format numbers floats with comma and dot如何用逗号和点格式化数字浮点数
【发布时间】:2020-06-03 03:18:01
【问题描述】:

我有以下需要格式化的数据:

  Ativo        high       close
 HTMX11       169.8       169.8
 KNHY11       116.0       116.0
 FAED11       272.3       272.3
 FLRP11     1579.92     1579.92
 FVPQ11       215.5       215.5

需要将 1579.92 转换为 1.579,92

没问题,因为我可以做到:

import pandas as pd
import locale
locale.setlocale (locale.LC_ALL, 'pt_br.utf-8')
pd.set_option ('display.float_format', lambda x: locale.format ('%. 2f', x, grouping = True))

但是当我需要将列转换为字符串并添加一些字母时,数字仅使用逗号保留:

我需要完整的格式化。

df['close'] = '$' + df['close'].astype()
df['close']

结果:

Fechamento
  R$ 169,8
  R$ 116,0
  R$ 272,3
R$ 1579,92
  R$ 215,5

想要的输出:

R$ 1.579,92

【问题讨论】:

标签: python pandas


【解决方案1】:

如您所见,display 选项仅影响显示。因此,如果您想将列实际转换为字符串,则需要进行显式转换,可能使用locale.format()

locale 方法的功能也有所限制,因此我建议使用Babel 模块进行国际化和本地化。 Babel 有一个更丰富的 API,它实际上提供了您可以使用的本地化数据(因此您不需要依赖它在您的操作系统中可用)它还包括有关货币的数据,因此它也可以为您进行转换。

你可以通过以下方式安装 Babel:

pip install Babel

然后您可以将您的列转换为使用巴西雷亚尔货币:

from babel.numbers import format_currency

df['close'] = df['close'].apply(
    lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)

或者,将“高”和“接近”转换在一起:

df[['high', 'close']] = df[['high', 'close']].applymap(
    lambda v: format_currency(v, 'BRL', locale='pt_BR'),
)

如果您从 DataFrame 生成 HTML(例如,在 Jupyter 笔记本中),您可以使用 Styling API 仅在呈现 DataFrame 时应用格式,将底层数据保持为浮点数而不是字符串:

df.style.format(
    lambda v: format_currency(v, 'BRL', locale='pt_BR'),
    subset=['high', 'close'],
)

【讨论】:

    【解决方案2】:
    import pandas as pd
    from babel.numbers import format_currency
    df = pd.DataFrame({"close":[169.8,116.0,272.3,1579.92,215.5]})
    df['close'].apply(lambda x :format_currency(x,'BRL', locale='pt_BR'))
    

    输出:

    0      R$ 169,80
    1      R$ 116,00
    2      R$ 272,30
    3    R$ 1.579,92
    4      R$ 215,50
    

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      相关资源
      最近更新 更多