如何让pandas透视表导出Excel仅列名加粗、值为常规字体?
解决方法
问题出在你当前的样式设置逻辑搞反了——你给索引应用了常规字体,反而让原本需要加粗的部分变成了常规。要实现仅索引(即你说的"列名")加粗,数据值用常规字体,可以按以下方式修改代码:
修正后的代码
import pandas as pd # 创建测试数据框 df = pd.DataFrame( {'Name': ['ravi', 'Deepthy','ravi'], 'Ship': ['mount everes', 'mount everes', 'Oasis of the Seas'], 'Tracking': ['TESTTRACK003', 'TESTTRACK008', 'TESTTRACK009'], 'Bag': ['123', '129', '129'], }) # 生成透视表,将指定列设为索引 df = pd.pivot_table(df, values=["Name","Ship","Tracking","Bag"], index=["Name","Ship","Tracking","Bag"]) # 定义常规字体样式函数 def normal_font(_): return "font-weight: normal" # 对数据区域应用常规字体,索引保持默认加粗样式 styled_df = df.style.applymap(normal_font) # 导出到Excel styled_df.to_excel("abcde.xlsx", engine="openpyxl", startrow=-1)
关键说明
applymap是对所有数据单元格应用样式,而applymap_index是对索引单元格应用样式。你之前用反了,现在调整为给数据单元格设常规字体,索引则保留pandas默认的加粗样式。- 如果你的pandas版本默认索引不是加粗,还可以额外给索引设置加粗样式,代码如下:
# 定义加粗样式函数 def bold_font(_): return "font-weight: bold" # 数据区域常规,索引加粗 styled_df = df.style.applymap(normal_font).applymap_index(bold_font)
内容的提问来源于stack exchange,提问作者Anoop
相关产品推荐
相关产品推荐

