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

判断DataFrame中每行最大值是否重复出现(向量化解法需求)

解决思路与代码实现

嘿,这个场景太常见了!针对你40000行、50列的大数据量,必须用向量化操作才能保证效率,绝对不能用逐行循环那种笨办法——不然等着卡到天荒地老吧😅

咱先明确需求:要判断Resultant_df里是否存在任意一行,其最大值在该行中重复出现(比如某行有两个或多个元素等于该行的最大值)。

一步到位的向量化实现

直接用Pandas的内置方法就能搞定,全是底层优化的向量化运算,速度拉满:

# 1. 计算每行的最大值
row_max = Resultant_df.max(axis=1)
# 2. 统计每行中等于最大值的元素个数
max_count = (Resultant_df == row_max[:, None]).sum(axis=1)
# 3. 判断是否存在行数满足条件(最大值出现次数>1)
has_duplicate_max = (max_count > 1).any()

# 输出结果
print("是否存在行内最大值重复的情况:", has_duplicate_max)

代码解释

  • Resultant_df.max(axis=1):向量化计算每行的最大值,返回一个和行数相同的Series,比循环快N倍。
  • Resultant_df == row_max[:, None]:这一步是广播机制的妙用——把行最大值转换成列向量,和整个DataFrame做相等比较,得到一个布尔值的DataFrame,每个位置标记该元素是否等于该行最大值。
  • .sum(axis=1):对每行的布尔值求和(True=1,False=0),得到每行最大值出现的次数。
  • .any():只要有一行满足max_count > 1,就返回True,直接得到最终判断结果。

额外拓展:筛选目标行

如果你还想把这些有重复最大值的行单独提出来查看,也可以直接用:

# 筛选出所有行内最大值重复的行
duplicate_max_rows = Resultant_df[max_count > 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:12:12