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

如何在Pandas DataFrame中使用applymap并传入多列作为参数?

解决DataFrame按行多列条件着色的问题

要实现同时基于level和title两列的条件为整行着色,你需要替换applymap为apply方法(指定axis=1处理整行),这样你的条件函数就能获取整行的所有列数据。

修正后的完整代码

import pandas as pd

# 创建示例DataFrame
df = pd.DataFrame({
    'level': ['Level 1', 'Level 1', 'Level 2', 'Level 2'],
    'title': ['abc', 'def', 'ghi', 'jkl']
})

my_set = set(["Level 1abc"])

def color_condition(row):
    # 提取当前行的level和title值
    level = row['level']
    title = row['title']
    # 注意:你的集合里是"Level 1abc",对应level+title的拼接结果,原代码写的title+level会不匹配
    if level + title in my_set:
        # 返回整行的样式,每个单元格都应用这个背景色
        return ['background-color: #daffd5'] * len(row)
    else:
        return ['background-color: #fa6b84'] * len(row)

# 使用apply方法,axis=1表示按行处理
styled_df = df.style.apply(color_condition, axis=1)
styled_df

关键说明

  • applymap是逐单元格处理,函数只能获取单个单元格的值,无法访问同一行的其他列;而apply(axis=1)会将整行数据作为参数传入函数,能同时获取该行的所有列值。
  • 函数返回的是一个与行长度一致的列表,确保该行的每个单元格都应用相同的背景色,实现整行着色。
  • 注意拼接顺序:你的目标集合my_set中的值是Level 1abc,对应level+title的拼接结果,原代码中写的title+level会得到abcLevel 1,无法匹配集合中的值,需要修正拼接顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:03:16