我是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函数列表和循环吗?
源数据和预期结果集: