如何在Pandas DataFrame第一列上方添加带黄色背景的单元格
问题描述
我有如下DataFrame:
import pandas as pd # 创建DataFrame df = pd.DataFrame({ "Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35], "City": ["New York", "Los Angeles", "Chicago"] }) df
对应的表格:
| Name | Age | City |
|---|---|---|
| Alice | 25 | New York |
| Bob | 30 | Los Angeles |
| Charlie | 35 | Chicago |
我想要在第一列(Name)的上方添加一个黄色背景的单元格,同时保留Name、Age和City作为列名。我尝试了以下方法,但效果不佳,希望找到更优解决方案:
import pandas as pd # 创建DataFrame df = pd.DataFrame({ "Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35], "City": ["New York", "Los Angeles", "Chicago"] }) # 临时修改列名 df.columns = ['INPUT', 'a', 'b'] # 创建新行 new_row = pd.DataFrame({'INPUT': ['Name'], 'a': ['Age'], 'b':['City']}) # 将新行与原DataFrame合并 df = pd.concat([new_row, df]).reset_index(drop=True) # 重命名列,只保留'INPUT' df.columns = ['INPUT', '', ''] df
解决方案
要实现需求,最合理的方式是使用**多级列索引(MultiIndex)**构建表头,再通过Styler设置指定单元格的背景色,既能保留原列名,又能在第一列上方添加带样式的单元格。
步骤1:构建多级列索引
给第一列的上层添加自定义名称(比如"INPUT"),其他列的上层留空:
import pandas as pd df = pd.DataFrame({ "Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35], "City": ["New York", "Los Angeles", "Chicago"] }) # 构建多级列索引 df.columns = pd.MultiIndex.from_tuples([ ("INPUT", "Name"), ("", "Age"), ("", "City") ])
步骤2:设置单元格背景色
使用Styler定位到第一列的上层单元格,设置黄色背景:
def highlight_top_cell(styler): # 定位到多级索引的上层第一格单元格 styler.set_table_styles([ {'selector': 'th.col0.level0', 'props': [('background-color', 'yellow')]} ]) return styler # 应用样式并显示 df.style.pipe(highlight_top_cell)
效果说明
- 原列名
Name、Age、City会保留在二级索引位置 - 第一列上方的
INPUT单元格会显示黄色背景 - 这种方式不会破坏原数据结构,比添加行的方法更规范
内容的提问来源于stack exchange,提问作者maven
相关产品推荐
相关产品推荐

