如何判断DataFrame中是否存在重复元素(排除空单元格)
Pandas 判断非空单元格是否存在重复值
实现思路
要实现排除空单元格(含空白字符串)后判断DataFrame是否存在重复值,分三步处理即可:
- 统一清理空白字符串:把所有带全空格的字符串转为空字符串,再映射为Pandas标准缺失值
pd.NA - 提取有效数据:将DataFrame转为一维序列,剔除所有缺失值
- 检测重复:对比有效数据的原始长度和去重后的长度,不等则说明存在重复
代码实现
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
相关产品推荐
相关产品推荐

