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

如何在Pandas中按行而非按列识别重复值?

Pandas 按行提取多列重复值的实现方法

你需要的是按行识别多列间重复出现的值,和现有按列判断行重复的逻辑完全不同。我们可以通过逐行统计值的出现频率,筛选出重复值并格式化输出,直接实现你想要的效果。

实现代码

import pandas as pd

# 初始化目标数据框
df2 = pd.DataFrame({
    "A":["foo", "foo", "foo", "bar"], 
    "B":[0,1,1,1], 
    "C":["A","foo","B","bar"], 
    "D":["bar","bar","B","foo"], 
    "E":["bar","bar","B","foo"]
})

# 定义行处理函数:提取当前行中出现≥2次的值
def extract_row_duplicates(row):
    # 统计每行各值的出现次数
    count = row.value_counts()
    # 筛选重复值并排序(保证输出顺序和预期一致)
    dup_values = count[count >= 2].index.tolist()
    # 转为逗号分隔的字符串,无重复值则返回空
    return ', '.join(sorted(dup_values)) if dup_values else ''

# 按行应用函数,生成dup列
df2['dup'] = df2.apply(extract_row_duplicates, axis=1)

# 输出结果
print(df2)

运行结果

A  B    C    D    E      dup
0  foo  0    A  bar  bar      bar
1  foo  1  foo  bar  bar foo, bar
2  foo  1    B    B    B        B
3  bar  1  bar  foo  foo bar, foo

逻辑说明

  • axis=1 指定apply按行处理,每行数据会以Series形式传入函数
  • row.value_counts() 快速统计当前行内每个值的出现次数
  • 筛选出出现次数≥2的值,排序后用逗号连接成字符串,确保输出格式和预期一致
  • 无重复值时返回空字符串,避免出现NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:13:15