为了账号安全,请及时绑定邮箱和手机立即绑定

Python Pandas:样式列标题

Python Pandas:样式列标题

牛魔王的故事 2021-12-09 18:23:01
我正在使用Pandas 样式器根据列标题的名称为某些列提供背景颜色。虽然这按预期工作,但列标题的背景颜色不会改变。这是我的脚本中应用了你的风格的部分:def highlight_col(x):    if x.name in added_columns:        return ['background-color: #67c5a4']*x.shape[0]    elif x.name in dropped_columns:        return ['background-color: #ff9090']*x.shape[0]    else:        return ['background-color: None']*x.shape[0]old = old.style.apply(highlight_col, axis=0)有没有办法将style.apply() 函数不仅应用于列标题下方的单元格,还应用于包括列标题在内的整个列?编辑:为了澄清这里是 excel 输出的 屏幕截图: excel 输出的屏幕截图“标题 2”应该与它下面的单元格具有相同的背景颜色。
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

好的,我想我想出了一种使用 html 'selectors' 处理列标题格式的方法:


使用您的大部分代码作为设置:


df = pd.DataFrame('some value', columns=['Header1','Header2','Header3'], index=np.arange(12))

added_columns = 'Header2'

dropped_columns = 'Header1'


def highlight_col(x):

    if x.name in added_columns:

        return ['background-color: #67c5a4']*x.shape[0]

    elif x.name in dropped_columns:

        return ['background-color: #ff9090']*x.shape[0]

    else:

        return ['background-color: None']*x.shape[0]



col_loc_add = df.columns.get_loc(added_columns) + 2

col_loc_drop = df.columns.get_loc(dropped_columns) + 2


df.style.apply(highlight_col, axis=0)\

  .set_table_styles(

     [{'selector': f'th:nth-child({col_loc_add})',

       'props': [('background-color', '#67c5a4')]},

     {'selector': f'th:nth-child({col_loc_drop})',

       'props': [('background-color', '#ff9090')]}])

输出:

//img1.sycdn.imooc.com//61b1d938000166c302880302.jpg

注意:我使用的是 Python 3.6+ 特性的 f-string。


查看完整回答
反对 回复 2021-12-09
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以使用np.vstack()如下堆叠列名并创建一个新的数据框来应用该函数,然后使用以下命令导出到 excel header=False:


使用@Scott 的数据和 piR 的函数,设置:


df = pd.DataFrame('some value', columns=['Header1','Header2','Header3'], index=np.arange(12))

def f(dat, c='red'):

    return [f'background-color: {c}' for i in dat]

你可以做:


pd.DataFrame(np.vstack((df.columns,df.to_numpy())),columns=df.columns).style.apply(

                  f,subset=['Header2']).to_excel('file.xlsx',header=False,index=False)

excel文件输出:

//img1.sycdn.imooc.com//61b1d9540001bf0c04160515.jpg

查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 387 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号