官方文档:
主要函数:
Styler.apply(self, func, axis=0, subset=None, **kwargs)
参数说明:
- func 处理数据的自定义函数,主要要返回一个与处理数据一样长的样式list。
- axis 轴,表示是按行0还是按列1进行数据处理,主要区别是在使用 max()等统计函数时会有不一样的结果。
- subset 需要处理的列,这是一个列名的list,指定列名后,只处理指定列的数据。
- **kwargs 是传递给 自定义函数func的其他参数。
简单应用
自定义函数func(将最大的数值的单元格标记为黄底红字)
def highlight_max(x):
return ['background-color: yellow; color: red' if v == x.max() else ''
for v in x]
应用
df1=pd.DataFrame({'名字':['小绿','小白','小红','小明'],
'语文':[95,88,23,66],
'政治':[96,64,33,66],
'英语':[66,100,33,66]})
df2=pd.DataFrame({'名字':['小白','小绿','小红','小明'],
'英语':[98,95,94,67],
'篮板':[7,10,13,8],
'失误':[10,2,0,8]})
# 替换索引
df2 = df2.set_index('名字', drop=True, inplace=False)
df1 = df1.set_index('名字', drop=True, inplace=False)
# 合并df1与df2两个表
df3 = pd.concat([df1, df2],keys=['aaa','bbb'],axis=1,join='inner')
# 处理数据添加样式
df3 = df3.style.apply(highlight_max, subset=[('aaa', '英语'), ('bbb', '英语')])
# 保存数据到excel
df3.to_excel('a.xlsx')
ps:这里的subset参数之所以这么写,是因为df3是通过df1与df2合并得来的,其列明也是复合列名,使用 print(df3.index) 可以查看索引如下