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

Pandas行最大值平局处理:按对应val列选择对应类型

解决方案:多列平局时按对应价值列优先级选择类型

方法一:基于权重的快速计算法

这种方法通过给类型得分赋予足够高的权重,让得分优先级高于对应价值,直接用idxmax获取结果,代码简洁高效:

import pandas as pd

# 初始化数据集
matrix = [(1, 0.3, 0, 0.7, 30, 0, 50),
          (2, 0.4, 0.4, 0.3, 20, 50, 30),
          (3, 0.5, 0.2, 0.3, 30, 20, 30),
          (4, 0.7, 0, 0.3, 100, 0, 40),
          (5, 0.2, 0.4, 0.4, 50, 30, 80)
          ]
df = pd.DataFrame(matrix, columns=["id", "terror", "drama", "action", "val_terror", "val_drama", "val_action"])

# 定义目标列
type_cols = ["terror", "drama", "action"]
val_cols = ["val_terror", "val_drama", "val_action"]

# 设置权重:确保权重值大于val列的最大可能值(这里val最大为100,取100即可)
weight = 100

# 计算优先级得分:类型得分*权重 + 对应val值,保证得分优先,平局时val高的胜出
priority_scores = df[type_cols] * weight + df[val_cols].values

# 获取每行优先级最高的类型
df['top_type'] = priority_scores.idxmax(axis=1)

print(df)

方法二:分组排序法

如果不想依赖权重设定,可以通过构造临时数据结构,按行分组排序后取首位:

import pandas as pd

# 初始化数据集(同上)
matrix = [(1, 0.3, 0, 0.7, 30, 0, 50),
          (2, 0.4, 0.4, 0.3, 20, 50, 30),
          (3, 0.5, 0.2, 0.3, 30, 20, 30),
          (4, 0.7, 0, 0.3, 100, 0, 40),
          (5, 0.2, 0.4, 0.4, 50, 30, 80)
          ]
df = pd.DataFrame(matrix, columns=["id", "terror", "drama", "action", "val_terror", "val_drama", "val_action"])

type_cols = ["terror", "drama", "action"]
val_cols = ["val_terror", "val_drama", "val_action"]

# 构造多层列的临时DataFrame,将每个类型的得分和对应val值关联
temp_df = pd.concat(
    [df[type_cols], df[val_cols].rename(columns=dict(zip(val_cols, type_cols)))],
    axis=1,
    keys=['score', 'val']
)

# 按行分组,先按score降序,再按val降序排序,取第一个类型
df['top_type'] = temp_df.stack(level=0).groupby(level=0).apply(
    lambda x: x.sort_values(['score', 'val'], ascending=False).index[0]
)

print(df)

输出结果

两种方法都会得到符合要求的结果:

id  terror  drama  action  val_terror  val_drama  val_action top_type
0   1     0.3    0.0     0.7          30          0          50   action
1   2     0.4    0.4     0.3          20         50          30    drama
2   3     0.5    0.2     0.3          30         20          30   terror
3   4     0.7    0.0     0.3         100          0          40   terror
4   5     0.2    0.4     0.4          50         30          80   action

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:15:29