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

Python PandasTable按组高亮C列最大值问题求助

解决分组高亮C列最大值的方法

核心思路是先给DataFrame标记出每组(A、B列组合)中C列的最大值行,再通过PandasTable的自定义样式功能对目标单元格高亮。

步骤1:标记分组最大值行

用groupby结合transform方法,给原DataFrame新增一列识别分组内的C列最大值行:

import pandas as pd

# 假设你的原始数据存储在df中
df['is_group_max'] = df.groupby(['A', 'B'])['C'].transform('max') == df['C']

步骤2:在PandasTable中实现分组高亮

通过遍历单元格并根据标记列设置背景色,完成分组高亮:

from pandastable import Table
import tkinter as tk

root = tk.Tk()
frame = tk.Frame(root)
frame.pack(fill='both', expand=True)

# 初始化表格并加载数据
table = Table(frame, dataframe=df, showtoolbar=True, showstatusbar=True)
table.show()

# 获取C列的索引位置
c_col_idx = table.model.df.columns.get_loc('C')

# 遍历行,对分组最大值对应的C列单元格高亮
for row_idx in range(table.model.getRowCount()):
    if table.model.df.iloc[row_idx]['is_group_max']:
        # 用浅红色高亮,可自行替换颜色值(如'lightgreen'或十六进制色码)
        table.set_cell_color(row_idx, c_col_idx, '#ffcccc')

# 可选:删除标记列,避免在表格中显示
df.drop('is_group_max', axis=1, inplace=True)
table.updateModel(TableModel(df))
table.redraw()

root.mainloop()

兼容说明

如果set_cell_color方法不可用(不同PandasTable版本差异),可以直接修改单元格属性:

cell = table.get_cell(row_idx, c_col_idx)
cell.configure(bg='#ffcccc')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:10:32