当前的熊猫样式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')
我知道这是一个相对较新的问题,是否有人可以使用它?
答案 0 :(得分:1)
我相信您使用number-format
的Excel术语而不是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