Python 财务报表中的会计格式

Python 财务报表中的会计格式,python,pandas,pandas-styles,Python,Pandas,Pandas Styles,x=pd.DataFrame([[5.75,7.32],[1000000,-2]] def货币(val): """ 获取值并返回格式正确的货币 """ 如果val,.0f})”.format(abs((val))) 其他: 返回“${:>,.0f}”。格式(abs(val)) x、 格式({0:lambda x:money(x), 1:lambda x:money(x) }) 我正在尝试使用excel会计格式在pandas jupyter显示中设置货币格式。看起来像下面的 我最成功地使用了上

x=pd.DataFrame([[5.75,7.32],[1000000,-2]]
def货币(val):
"""
获取值并返回格式正确的货币
"""
如果val<0:
返回“$({:>,.0f})”.format(abs((val)))
其他:
返回“${:>,.0f}”。格式(abs(val))
x、 格式({0:lambda x:money(x),
1:lambda x:money(x)
})
我正在尝试使用excel会计格式在pandas jupyter显示中设置货币格式。看起来像下面的


我最成功地使用了上述代码,但我也尝试了大量css和html内容,但我对这些语言不太精通,因此它们根本不起作用。

您的输出看起来像是在使用Jupyter笔记本中的
html
显示,因此,您需要为
空白
样式设置
pre
,因为
HTML
折叠多个空白,并使用
monospace
字体,例如:

x=pd.DataFrame([[5.75,7.32],[1000000,-2]])

def money(val):
    """
    Takes a value and returns properly formatted money
    """
    if val < 0:
        return "$({:>,.0f})".format(abs((val)))
    else:
        return "${:>,.0f}".format(abs(val))

x.style.format({0: lambda x: money(x),
                1: lambda x: money(x)
                })
现在,要格式化浮点,使用
$
对齐的简单右键可以如下所示:

styles = {
    'font-family': 'monospace',
    'white-space': 'pre'
}

x_style = x.style.set_properties(**styles)

这并不完全正确,因为您希望将负数转换为
(2)
,您可以使用嵌套格式执行此操作,将数字格式与对正分隔开来,以便在负数时添加
()
,例如:

x_style.format('${:>10,.0f}')
x_style.format(lambda f:'${:>10}'。format(('({:,.0f})'如果f<0,则为'{:,.0f}')。format(f)))

注意:这是脆弱的,因为它假定
10
足够宽,而excel动态地将
$
左对齐为该列中所有值的最大宽度


另一种方法是扩展
string.StringFormatter
以实现记帐格式逻辑。

请不要将代码作为图像发布,这会使人们很难剪切粘贴以进行复制和测试。我将代码作为文本发布。我还把它作为一个图像包含进来,这样输出就会显示出来。谢谢!我有点放弃了在这里得到答案!谢谢你让空白重复一下,我使用了',但这是一个特别不那么刺耳的解决方案!我将完全写下我所做的,并编辑它,但它绝对会使用这一块!
x_style.format(lambda f: '${:>10}'.format(('({:,.0f})' if f < 0 else '{:,.0f}').format(f)))