我如何删除数据框中的数据?

问题描述 投票:0回答:2

我正在查找重复的预订 ID,然后尝试将其从电子表格中删除。这并没有发挥应有的作用。我哪里做错了?

我尝试使用

dataRange = file1[~file1['预约 ID'].isin(file2['预约 ID'])]

file1 = file1.drop(file1.index[dataRange.index])

我期望的是一个没有任何内容的电子表格。我得到的是一个包含重复数据的电子表格。

pandas dataframe data-science
2个回答
0
投票

在 file1 中查找重复的预订 ID

duplicated_ids = file1[file1.duplicate(subset=['预订 ID'], keep=False)]

从 file1 中删除具有重复预订 ID 的行

file1 = file1[~file1.duplicate(subset=['预约 ID'], keep=False)]


0
投票

看起来您的方法在处理从 DataFrame 中删除重复的预订 ID 时存在一些逻辑问题。这是代码的分步解释和更正版本:

  1. 识别重复的预订 ID :您想要在

    file1
    中查找在
    file2
    中也存在预订 ID 的行。

  2. 过滤掉这些重复的行:然后您需要从

    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]

让我们来分解一下:

  1. 识别重复项
    isin
    方法创建一个布尔系列,其中
    True
    表示
    file1
    中的预订ID也可在
    file2
    中找到。
duplicated_ids = file1['Reservation ID'].isin(file2['Reservation ID'])
  1. 过滤 DataFrame:使用此布尔系列过滤掉重复的行。
    ~
    运算符对布尔系列取反,保留预订 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
)。

© www.soinside.com 2019 - 2024. All rights reserved.