如何删除数据框中重复的Reservation ID?代码执行异常求助
问题排查与修正
核心逻辑错误
你的代码逻辑完全搞反了:
- 第一行
dataRange = file1[~file1['Reservation ID'].isin(file2['Reservation ID'])]是提取file1中不存在于file2的Reservation ID行 - 第二行删除这些行后,剩下的恰恰是file1和file2共有的重复ID行,这和你要删除重复项的需求完全相反,所以才会保留重复数据。
修正代码
如果你的目标是删除file1中所有在file2里出现过的Reservation ID(预期最终得到空表格,说明file1的ID全在file2里),直接用下面的代码即可:
# 保留file1中不在file2里的ID行,若所有ID都重复则返回空表 file1 = file1[~file1['Reservation ID'].isin(file2['Reservation ID'])]
或者用删除索引的写法:
# 找到所有重复的ID行索引 duplicate_idx = file1[file1['Reservation ID'].isin(file2['Reservation ID'])].index # 删除重复行 file1 = file1.drop(duplicate_idx)
额外排查点
如果修正逻辑后还是不对,检查两个表格的Reservation ID数据类型是否一致:
- 比如file1里是整数,file2里是字符串,即使数值相同,
isin也会判断为不存在 - 可以统一转换类型后再操作:
# 统一转为字符串类型 file1['Reservation ID'] = file1['Reservation ID'].astype(str) file2['Reservation ID'] = file2['Reservation ID'].astype(str)
内容的提问来源于stack exchange,提问作者Kuraki
相关产品推荐
相关产品推荐

