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

如何用Pandas筛选DataFrame跨列重复值并存入列表

使用Pandas找出DataFrame中的跨列重复值

需求说明:遍历DataFrame,将至少在另一列中出现过的值存入列表。规则为:同一列内的重复值不计入统计,仅保留跨列存在的重复值——只要在其他列出现过一次,就符合条件。

示例数据:

import pandas as pd

test_df = pd.DataFrame({'area_1': ['John', 'Mike', 'Mary', 'Sarah'],
                        'area_2': ['John', 'Bob', 'Mary', 'Mary'],
                        'area_3': ['Jane', 'Sarah', 'David', 'Michael'],
                        'area_4': ['Diana', 'Mike', 'Bill', 'Bill']})

预期输出:combined_insp = ['John', 'Mary', 'Sarah', 'Mike']

解决方案一:基础遍历实现

# 初始化空列表
combined_insp = []

# 1. 提取每一列的唯一值集合(自动排除同列重复)
column_unique_values = [set(column) for column in test_df.values.T]

# 2. 统计每个值出现在多少个不同列中
value_column_count = {}
for col_values in column_unique_values:
    for val in col_values:
        value_column_count[val] = value_column_count.get(val, 0) + 1

# 3. 筛选出在至少2列出现过的值
combined_insp = [val for val, count in value_column_count.items() if count >= 2]

print(combined_insp)

解决方案二:Pandas简洁实现

利用Pandas内置方法简化操作,代码更紧凑:

# 对每列取唯一值 → 堆叠为一维序列 → 统计值出现的列数
value_col_counts = test_df.apply(pd.Series.unique).stack().value_counts()

# 筛选出在≥2列出现的值,转为列表
combined_insp = value_col_counts[value_col_counts >= 2].index.tolist()

print(combined_insp)

逻辑说明

两种方法的核心逻辑一致:

  1. 先排除同一列内的重复值,只保留每列的唯一值;
  2. 统计每个值在多少个不同列中出现;
  3. 筛选出出现列数≥2的值,这些就是跨列存在的重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:06:24