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

如何在Pandas中对比原生列高亮模型列并生成统计状态列

Pandas 实现高亮与统计列需求

步骤1:新增统计与状态列

先处理统计逻辑,筛选所有模型(MODEL)列,计算每行中值小于原生(NATIVE)列的MODEL列数量,再生成状态列:

# 筛选所有以MODEL开头的列(根据实际列名调整匹配规则)
model_cols = df.columns[df.columns.str.startswith('MODEL')]
# 若列名是明确列表,可直接指定:model_cols = ['MODEL1', 'MODEL2', ...]

# 计算每行中MODEL列值 < NATIVE的数量
df['model_less_native_count'] = (df[model_cols] < df['NATIVE']).sum(axis=1)

# 生成状态列:数量<5填done,否则填repeat
df['status'] = df['model_less_native_count'].map(lambda x: 'done' if x < 5 else 'repeat')

步骤2:实现MODEL列高亮

编写样式函数,对每行中NATIVE值小于对应MODEL列值的单元格添加浅绿色背景:

def highlight_model_cells(row):
    styles = [''] * len(row)
    native_val = row['NATIVE']
    # 获取所有MODEL列的索引位置
    model_col_indices = [df.columns.get_loc(col) for col in model_cols]
    for idx in model_col_indices:
        if native_val < row.iloc[idx]:
            styles[idx] = 'background-color: lightgreen'
    return styles

# 应用样式
styled_dataframe = df.style.apply(highlight_model_cells, axis=1)

关键说明

  • 原代码问题:列名含空格/特殊字符时不能直接用x.MODEL 1,需用索引或引号引用;逻辑判断条件错误,需明确对比NATIVE与单个MODEL列的值。
  • 大数据量适配:20000行数据使用style.apply(axis=1)会逐行处理,若追求效率,可尝试用向量化方式生成样式矩阵,但上述代码已能满足功能需求。
  • 列名匹配:若MODEL列命名规则不是以MODEL开头,需调整model_cols的筛选逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:25:24