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

如何基于Pandas DataFrame中另一列元素为指定列设置样式?

Pandas 按对应分数列给字母列设置背景色

问题场景

现有如下示例Pandas DataFrame:

import pandas as pd

# Sample DataFrame
data = {
    'Greek letters': ["Alpha", "Beta", "Gamma", "Omega", "Delta"],
    'English letters': ["A", "B", "C", "D", "E"],
    'Greek Letter score': [5, 10, 15, 20, 25],
    'English Letter score': [3, 11, 12, 18, 25]
}
df = pd.DataFrame(data)

需求是:根据Greek Letter score和English Letter score列的分数,分别给Greek letters和English letters列的元素设置对应背景色:

  • 分数≤10:浅绿背景
  • 10<分数≤20:黄色背景
  • 分数>20:蓝色背景

原有的applymap方法只能获取单个单元格的值,无法关联到同一行的对应分数列,因此需要调整实现方式。

解决方案

使用style.apply方法并指定axis=1按行处理,这样可以访问整行数据,从而匹配对应列的分数值并设置样式。

完整实现代码

import pandas as pd

# 示例DataFrame
data = {
    'Greek letters': ["Alpha", "Beta", "Gamma", "Omega", "Delta"],
    'English letters': ["A", "B", "C", "D", "E"],
    'Greek Letter score': [5, 10, 15, 20, 25],
    'English Letter score': [3, 11, 12, 18, 25]
}
df = pd.DataFrame(data)

def highlight_row(row):
    # 初始化样式列表,默认无样式
    styles = [''] * len(row)
    # 建立字母列与对应分数列的映射关系
    col_score_mapping = {
        'Greek letters': 'Greek Letter score',
        'English letters': 'English Letter score'
    }
    
    # 遍历需要设置样式的列
    for col_name, score_col_name in col_score_mapping.items():
        # 获取当前列在行中的索引位置
        col_index = row.index.get_loc(col_name)
        # 获取对应分数值
        score = row[score_col_name]
        
        # 根据分数设置背景色
        if score <= 10:
            styles[col_index] = 'background-color: lightgreen'
        elif score <= 20:
            styles[col_index] = 'background-color: yellow'
        else:
            styles[col_index] = 'background-color: blue'
    
    return styles

# 应用样式,axis=1表示按行处理
styled_df = df.style.apply(highlight_row, axis=1)
# 在Jupyter环境中直接运行可显示样式表格,本地可通过styled_df.to_html('styled_table.html')保存为HTML查看
styled_df

代码说明

  1. 按行处理:style.apply(..., axis=1)会将每一行数据传入highlight_row函数,因此可以直接访问该行的所有列数据。
  2. 列映射:通过col_score_mapping字典建立字母列与分数列的对应关系,让代码更易维护,新增列时只需修改该字典。
  3. 样式赋值:初始化一个与行长度相同的空样式列表,根据分数判断结果为对应位置的单元格设置背景色样式。

效果说明

运行代码后,Greek letters和English letters列的元素会根据各自对应分数列的值,显示对应的背景色,与预期效果一致。

内容的提问来源于stack exchange,提问作者Diamoniner12345

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:50:35