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文件输出:

添加回答
举报
