如何解决如何使用style.applymap为数据框中的行着色?
我想为DataFrame对象ggplot() +
geom_line(aes(x=month,y=cumsum(total),colour='FY19',group=fiscal_year),fy1920 %>% filter(fiscal_year=='19')) +
geom_line(aes(x=month,colour='FY20',fy1920 %>% filter(fiscal_year=='20')) +
scale_colour_discrete(name='fiscal_year',labels=c("FY19","FY20"))
中的“总计”行和“总计”列上色,为此,我尝试了以下操作:
df
但是,当编译器到达代码的最后一行时,会出现以下错误:
import pandas as pd
# Function to set background highlight colour.
def bg_colour (val):
colour = '#ffff00'
return 'background-color: %s' % colour
df = pd.DataFrame({'Category': ['A','B','C','D','Grand Total'],'Total': [1,2,3,4,10]})
t1 = df.style.applymap(bg_colour,subset = ['Total'])
dfT = df.T
dfT = dfT.style.applymap(bg_colour,subset = [4])
t1T = t1.T
据我了解,---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-48-c0c380b9c518> in <module>
12 dfT = dfT.style.applymap(bg_colour,subset = [4])
13 display(dfT)
---> 14 t1T = t1.T
AttributeError: 'Styler' object has no attribute 'T'
隐式地将DataFrame转换为Styler类型的对象,该对象无法作为DataFrame进行进一步处理。
问题1 :DataFrame对象的行和列如何着色?
问题2 :如何将Styler类型的对象转换为DataFrame类型的对象?
解决方法
Style对象返回一个HTML格式的字符串,因此我认为将其转换为数据框并不直接。代替applymap
,我将重写函数,以便它将列/行作为参数并使用apply
。像这样:
def bg_colour_col (col):
colour = '#ffff00'
return ['background-color: %s' % colour
if col.name=='Total' or i==4 # color column `Total` or row `4`
else ''
for i,x in col.iteritems()]
df.style.apply(bg_colour_col)
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。