亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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')]}])

輸出:

http://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文件輸出:

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

查看完整回答
反對 回復 2021-12-09
  • 2 回答
  • 0 關注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號