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)))