熊猫样式:将数字格式导出为ex​​cel

时间:2019-06-26 16:58:06

标签: python pandas

当前的熊猫样式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')

我知道这是一个相对较新的问题,是否有人可以使用它?

1 个答案:

答案 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