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

如何在DataFrame中实现带随机平局决胜的idxmax功能?

实现带随机平局决胜的idxmax功能

解决方案步骤

  • 仅针对目标列(col1、col2)处理,排除id列干扰
  • 对每行筛选出所有等于最大值的列作为候选
  • 从候选列中随机选择一个作为结果

代码实现

首先导入依赖库:

import pandas as pd
import numpy as np

构造示例DataFrame:

df = pd.DataFrame({
    'id': [1, 2, 3],
    'col1': [3.0, 5.0, 6.0],
    'col2': [4.0, 5.0, 9.0]
})

定义随机决胜的idxmax函数:

def random_idxmax(row):
    max_val = row.max()
    # 筛选出值等于最大值的列名列表
    candidate_cols = row[row == max_val].index.tolist()
    # 随机返回一个候选列
    return np.random.choice(candidate_cols)

将函数应用到目标列,生成结果列:

df['idxmax'] = df[['col1', 'col2']].apply(random_idxmax, axis=1)

效果验证

运行上述代码后,非平局行(第1、3行)会稳定返回最大值对应的列(col2);平局行(第2行)每次运行会随机返回col1或col2,彻底消除原idxmax(axis=1)的首列偏差。

比如多次执行查看第2行结果:

for _ in range(3):
    print(f"第2行idxmax结果: {df.loc[1, 'idxmax']}")

输出示例:

第2行idxmax结果: col1
第2行idxmax结果: col2
第2行idxmax结果: col1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:32:43