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')]}])
輸出:
注意:我使用的是 Python 3.6+ 特性的 f-string。

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文件輸出:
添加回答
舉報