我需要格式化以下数据:
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
输出:
正如您所注意到的,
display
选项只影响显示。因此,如果要将列实际转换为字符串,则需要执行显式转换,可能需要使用locale.format()
locale
方法的功能也有一定的限制,因此我建议使用Babel模块进行国际化和本地化。Babel有一个更丰富的API,它实际上提供了您可以使用的本地化数据(因此您不需要依赖于它在您的O.S.中的可用性)。它还包括有关货币的数据,因此它也可以为您进行转换您可以通过以下方式安装Babel:
然后,您可以将您的列转换为使用巴西真实货币,并使用:
或者,要同时转换“高”和“近”:
如果要从数据帧生成HTML(例如,在Jupyter笔记本中),则可以使用Styling API仅在呈现数据帧时应用该格式,将基础数据保持为浮点数而不是字符串:
相关问题 更多 >
编程相关推荐