我正在查找重复的预订 ID,然后尝试将其从电子表格中删除。这并没有发挥应有的作用。我哪里做错了?
我尝试使用
dataRange = file1[~file1['预约 ID'].isin(file2['预约 ID'])]
file1 = file1.drop(file1.index[dataRange.index])
我期望的是一个没有任何内容的电子表格。我得到的是一个包含重复数据的电子表格。
duplicated_ids = file1[file1.duplicate(subset=['预订 ID'], keep=False)]
file1 = file1[~file1.duplicate(subset=['预约 ID'], keep=False)]
看起来您的方法在处理从 DataFrame 中删除重复的预订 ID 时存在一些逻辑问题。这是代码的分步解释和更正版本:
识别重复的预订 ID :您想要在
file1
中查找在 file2
中也存在预订 ID 的行。
过滤掉这些重复的行:然后您需要从
file1
中删除这些已识别的行。
您当前的逻辑无法正确识别和删除重复的行。这是代码的更正版本:
# Identify duplicated Reservation IDs
duplicated_ids = file1['Reservation ID'].isin(file2['Reservation ID'])
# Drop the rows in file1 with duplicated Reservation IDs
file1_cleaned = file1[~duplicated_ids]
让我们来分解一下:
isin
方法创建一个布尔系列,其中True
表示file1
中的预订ID也可在file2
中找到。duplicated_ids = file1['Reservation ID'].isin(file2['Reservation ID'])
~
运算符对布尔系列取反,保留预订 ID 不在 file2
中的行。file1_cleaned = file1[~duplicated_ids]
这种更正的方法直接从
file1
中过滤掉重复的行,而不需要额外的删除操作。结果是一个 DataFrame (file1_cleaned
),它排除 file1
中具有在 file2
中找到的预订 ID 的任何行。
这是一个完整的示例:
import pandas as pd
# Example data
file1 = pd.DataFrame({
'Reservation ID': [1, 2, 3, 4, 5],
'Data': ['A', 'B', 'C', 'D', 'E']
})
file2 = pd.DataFrame({
'Reservation ID': [3, 4]
})
# Identify duplicated Reservation IDs
duplicated_ids = file1['Reservation ID'].isin(file2['Reservation ID'])
# Drop the rows in file1 with duplicated Reservation IDs
file1_cleaned = file1[~duplicated_ids]
print(file1_cleaned)
Reservation ID Data
0 1 A
1 2 B
4 5 E
此输出显示
file1
,其中包含预订 ID 3
和 4
的行被删除,这是预期的结果。
如果您遵循此更正的方法,您应该获得一个没有预期重复的预订 ID 的 DataFrame (
file1_cleaned
)。