如何格式化带有千位分隔符和括号中的负数的数据透视表数字?

Posted

技术标签:

【中文标题】如何格式化带有千位分隔符和括号中的负数的数据透视表数字?【英文标题】:How to format pivot table numbers with a thousands seperator and negative numbers in brackets? 【发布时间】:2019-09-29 14:08:51 【问题描述】:

我想将我的负数格式化为“会计”格式,即用括号和逗号作为千位分隔符。例如,我想将 -1000000 格式化为 (1,000,000)。

我可以用千位分隔符或用括号表示负数来格式化我的数字(在数据透视表中),但不能同时使用这两种方法。

这会格式化带有千位分隔符的数据透视表(别名 pt)中的数字:

pd.options.display.float_format = ':,.0f'.format
print(pt)

这会格式化数据透视表中的数字,并用括号表示负数:

formatter = lambda x: '(%s)' % str(x)[1:] if x < 0 else str(x)
pd.options.display.float_format = formatter
pt

【问题讨论】:

【参考方案1】:
def my_formatter(x):
    if x < 0:
        return '(:,.0f)'.format(-x)
    return ':,.0f'.format(x)

pd.options.display.float_format = my_formatter

例子:

pd.DataFrame([10000000., -20000000.])
#             0
#0   10,000,000
#1 (20,000,000)

【讨论】:

以上是关于如何格式化带有千位分隔符和括号中的负数的数据透视表数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示或隐藏数字中的千位分隔符

文本框只能输入数值,小数点,负数的问题

如何获得顶部带有千位分隔符的数字?

带有千位分隔符和小数的数字格式(如有必要)

使用美元符号和千位分隔符格式化引导表 [关闭]

如何格式化数字来定义千位分隔符?