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

如何判断DataFrame中是否存在重复元素(排除空单元格)

Pandas 判断非空单元格是否存在重复值

实现思路

要实现排除空单元格(含空白字符串)后判断DataFrame是否存在重复值,分三步处理即可:

  1. 统一清理空白字符串:把所有带全空格的字符串转为空字符串,再映射为Pandas标准缺失值pd.NA
  2. 提取有效数据:将DataFrame转为一维序列,剔除所有缺失值
  3. 检测重复:对比有效数据的原始长度和去重后的长度,不等则说明存在重复

代码实现

import pandas as pd

def has_duplicates_excluding_empty(df):
    # 去除字符串首尾空格,将全空格字符串转为空字符串
    cleaned_df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
    # 将空字符串替换为Pandas标准缺失值
    cleaned_df = cleaned_df.replace('', pd.NA)
    # 提取所有非空值并转为一维序列
    non_empty_values = cleaned_df.stack().dropna()
    # 原始长度与去重后长度不等则存在重复
    return len(non_empty_values) != len(non_empty_values.unique())

示例验证

示例1:无重复非空值(输出False)

data_df = {'col1': ['A','B', 'C', 'D'],
           'col2': ['E','F', '', 'G'],
           'col3': ['H', '', '  ', '  ']}
df = pd.DataFrame(data_df)
print(has_duplicates_excluding_empty(df))  # 输出: False

示例2:同列存在重复非空值(输出True)

data_df2 = {'col1': ['A','B', 'A', 'D'],
            'col2': ['E','F', '', 'G'],
            'col3': ['H', '', '  ', 'K']}
df2 = pd.DataFrame(data_df2)
print(has_duplicates_excluding_empty(df2))  # 输出: True

示例3:跨列存在重复非空值(输出True)

data_df3 = {'col1': ['A','B', 'C', 'D'],
            'col2': ['E','A', '', 'G'],
            'col3': ['H', '', '  ', '  ']}
df3 = pd.DataFrame(data_df3)
print(has_duplicates_excluding_empty(df3))  # 输出: True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:31:06