如何删除DataFrame中同一行两列值相同的重复数据行
你写的data[data['name'] != data['actors']]逻辑本身是成立的,没有生效通常是以下几个原因导致,对应解决方法如下:
失效常见原因
- 字符串存在首尾隐形空格、大小写差异,导致肉眼看起来相等的两个值实际并不相等
- 没有把筛选后的结果赋值给新变量/覆盖原变量,pandas筛选操作默认不会修改原DataFrame
- 行中存在NaN空值,
!=对NaN的判断会返回False,导致对应行被误过滤
解决代码
# 1. 先对两列做标准化处理:去首尾空格、统一转小写 # 2. 额外处理空值逻辑:两列任意一列为空时视为不相等,保留行;如果需要空值相等就删除这部分逻辑 mask = (data['name'].str.strip().str.lower() != data['actors'].str.strip().str.lower()) | data['name'].isna() | data['actors'].isna() # 3. 把筛选结果赋值给新变量,或者用data = data[mask]覆盖原数据 data_filtered = data[mask]
如果执行后仍有不符合预期的行,可以先把疑似重复的行转成字符串对比排查差异:
# 输出所有两列相等的行,检查实际值差异 print(data[data['name'].astype(str) == data['actors'].astype(str)])
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

