0

这里的另一个线程有类似问题的答案。但我希望使用Pandas ExcelWriter

我有一个大熊猫数据框df

Sou ATC   P25   P75 Avg
A   11    9     15  10
B   6.63  15    15  25
C   6.63  5     10  8

我想将此数据帧打印到 excel 文件,但我想将格式应用于 excel 文件的每一行,以便将以下规则应用于ATCAvg列中的单元格:

  • 如果值小于 P25,则显示为红色
  • 如果值大于 P75,则显示为绿色
  • 如果值介于 P25 和 P75 之间,则以黄色着色

excel中的样例显示如下:

在此处输入图像描述

请注意左对齐显示column A。我也有兴趣学习如何使用ExcelWriter左对齐输出到 excel。

我现在使用的启动代码是:

writer = pd.ExcelWriter(r'C:\outfile.xlx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='mysheet', index=False)
worksheet = writer.sheets['mysheet']

我不确定如何在上面的代码之外处理这个问题。

4

1 回答 1

2

我会使用style

def hightlighter(x):
    return np.select((x<df['P25'], x>df['P75']), 
              ('background-color: red', 'background-color: green'),
              'background-color: yellow')
def align(x):
    return ['text-align:left']*len(x)

(df.style
   .apply(hightlighter, subset=['ATC','Avg'])
   .apply(align, subset=['Source'])
   .to_excel(writer, sheet_name='mysheet', index=False, freeze_panes=(1,0))
)
于 2020-05-07T18:58:21.270 回答