Изменение цвета фона сводной таблицы Python DataFrame в зависимости от условия - PullRequest
0 голосов
/ 26 августа 2018

Я очень новичок в программе Python

Я хочу изменить цвет фона в сводной таблице result.color изменяет условие на основе другого столбца, и если столбец 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, в результате мы можем применить цветовой формат.я приложил выходной файл результатов.

Можете ли вы объяснить лямбда-функции и список циклов.

Исходные данные и ожидаемый результат установлены:

enter image description here

...