Python DataFrame数据透视表的背景颜色根据条件而变化

时间:2018-08-26 13:27:56

标签: python pandas dataframe lambda pivot-table

我是python程序的新手

我想更改数据透视表结果中的背景颜色。颜色根据其他列更改条件,并且如果Flag_Status列具有多个值,则颜色应为白色。

<pre>
Source Data             
JobID,Name,Flag_Statge,Runid,Value 
'JOB1','Q1','L1',1,200 
'JOB1','Q1','L1',1,300 
'JOB1','Q1','L4',1,214 
'JOB1','Q1','L2',1,364 
'JOB1','Q2','L1',1,214 
'JOB1','Q3','L3',1,176 
'JOB1','Q4','L2',1,82 
'JOB1','Q1','L2',2,201 
'JOB1','Q2','L1',2,224 
'JOB1','Q3','L4',2,196 
'JOB1','Q4','L1',2,182 
'JOB1','Q1','L3',3,201 
'JOB1','Q2','L1',3,224 
'JOB1','Q2','L1',3,189 
'JOB1','Q3','L2',3,196 
'JOB1','Q4','L3',3,182 



import pandas as pd 
import numpy as np

def fstatus(fbgcolor): 
     return {
        'L1': 'red', 
        'L2': 'green',
        'L3': 'blue',
        'L4': 'yellow' 
    }[fbgcolor]

sf = pd.read_excel(r'attachedexcel_filepath\PivotExam.xlsx')
df = pd.DataFrame(sf)

df = df.pivot_table(values=['Value'],index =['JobID','Name'],columns=['Runid'],aggfunc=np.average)


sdf = df.pivot_table(values=['Flag_Statge'],index =['JobID','Name'],columns=['Runid'],aggfunc={'Flag_Statge': lambda x: ','.join(x.unique())})



def bgcolorformat(row):
    ret = ["" for _ in row.index]
    ret[row.index.get_loc('Flag_Statge')]= sdf['Flag_Statge'].apply(lambda x: fstatus(x))


df.style.apply(bgcolorformat, axis=1)   

基于sdf结果,我们可以应用颜色格式。 我已经附上了输出结果文件。

您能解释lambda函数列表和循环吗?

源数据和预期结果集:

enter image description here

0 个答案:

没有答案