当前的Pandas styling help page提到
还可以使用以下伪CSS属性来设置excel特定的样式属性:
支持
number-format
导出到excel然而,没有工作的例子给出,并试图适应所提供的函数,我没有得到任何地方,根据以下:
import numpy as np
import pandas as pd
def format2zero(val):
frmat = '{0:,.0f}'
return 'number-format: %s' % frmat
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[0, 2] = np.nan
df.style.\
apply(format2zero).\
to_excel('styled.xlsx', engine='openpyxl')
我知道它是相对较新的,如果有人让它工作的话会很神奇?
发布于 2019-06-27 03:05:07
我相信您已经将Excel术语用于number-format
,而不是python术语。在Excel中,当你右击一个单元格并选择Format cells/Custom
时,你会看到一些选项,你可以定义你自己的选项。我认为#,##0
是您想要的小数位数为零的代码:
def format2zero(val):
return 'number-format: #,##0'
IIUC您应该使用df.style.applymap
而不是df.style.apply
,因为您希望将format2zero
应用于每个单元格,而不是每行或每列。
在Excel中查看时,在代码中进行这两处更改会得到以下输出:
A B C D E
0 1 1 0 -1
1 2 -1 -1 1 0
2 3 -2 0 1 2
3 4 1 0 0 1
4 5 1 1 0 1
5 6 -1 1 1 0
6 7 0 1 0 2
7 8 0 1 0 1
8 9 2 -1 1 -2
9 10 0 1 -1 0
https://stackoverflow.com/questions/56777777
复制相似问题