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

Python中多列按行查找重复值并生成标记列的报错解决

解决方案

错误原因

  1. 原代码中duplicated(keep=False)是判断整行是否与其他行重复,并非你需要的「行内列值重复」逻辑,完全偏离需求。
  2. if W_Interest[W_Interest.duplicated(keep=False)]:试图将DataFrame直接作为布尔条件判断,DataFrame的真值无法直接确定,导致抛出ValueError。

修正代码

# 提取所有以OEInterestTraceData开头的列(用startswith比contains更精准匹配开头)
W_Interest = loaddata1.loc[:, loaddata1.columns.str.startswith('OEInterestTraceData')]

# 生成dummy标记列
if len(W_Interest.columns) <= 1:
    # 仅1列时无重复可能,直接标记0
    W_Interest['dummy'] = 0
else:
    # 每行计算唯一值数量,若小于列数则说明行内存在重复,标记为1;否则为0
    W_Interest['dummy'] = (W_Interest.nunique(axis=1) < W_Interest.shape[1]).astype(int)

逻辑说明

  • 用str.startswith精准匹配以指定字符串开头的列,避免contains匹配到列名中间包含该字符串的情况。
  • 当目标列数≤1时,行内不可能有重复值,直接赋值0。
  • 当列数>1时,nunique(axis=1)计算每行的唯一值数量,若该数量小于列数,说明行内存在重复值,转换为整数类型后得到1/0的标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:15:34