You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

对应的表格:

NameAgeCity
Alice25New York
Bob30Los Angeles
Charlie35Chicago

我想要在第一列(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:35:04