簡體   English   中英

Python Pandas:樣式列標題

[英]Python Pandas: Style column header

我正在使用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”應具有與其下方單元格相同的背景顏色。

好的,我想我想出了一種方法來處理使用 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')]}])

輸出:

在此處輸入圖像描述

注意:我使用的是 Python 3.6+ 功能的 f-string。

您可以使用np.vstack()來堆疊列名,如下所示,並創建一個新的數據框來應用該函數,然后使用header=False導出到 excel:

使用@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文件的輸出: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM