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

如何为Pandas DataFrame指定行(最后两行)添加背景渐变

为DataFrame行子集应用背景渐变

你需要让Pandas DataFrame仅最后两行显示横向背景渐变,而非所有行都应用。原代码会给全部行添加渐变,修改方式如下:

原代码

import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)*50})

df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4)*50, columns=list('BCDE'))],
               axis=1)
df.iloc[0, 2] = np.nan
df.style.background_gradient(axis=1)

解决方案:使用subset参数指定行范围

这是最简洁的实现方式,直接利用background_gradient的subset参数锁定目标行:

import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)*50})

df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4)*50, columns=list('BCDE'))],
               axis=1)
df.iloc[0, 2] = np.nan

# 仅对最后两行应用横向背景渐变
styled_df = df.style.background_gradient(axis=1, subset=pd.IndexSlice[-2:, :])
styled_df

参数说明

  • pd.IndexSlice[-2:, :]:-2:选中倒数第二行到最后一行,:表示包含所有列,精准定位需要应用样式的行子集。
  • axis=1:保持原逻辑,按行计算数值分布并生成渐变,每行的颜色基于自身数据范围调整。

备选方案:自定义样式函数(更灵活)

如果需要给其他行添加额外样式,可使用apply方法结合自定义函数实现:

def gradient_last_two_rows(row):
    if row.name in df.index[-2:]:
        # 生成该行的渐变样式(示例渐变,可按需调整)
        return [f'background: linear-gradient(90deg, #e5f5e0, #31a354)' for _ in row]
    else:
        # 其余行无样式
        return [''] * len(row)

styled_df = df.style.apply(gradient_last_two_rows, axis=1)
styled_df

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:22:49