Python:数据框中有条件的重复行

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

我们有这个数据框:

身份证 目的地 改变
RL1 Z32 是的
RL1 Z32 没有
RL1 Z33 是的
RL1 Z33 是的
RL2 Z32 是的

我需要确定“Dest”Z32 是重复的,条件是其 ID 组的“Change”列中为“No”(对 RL1、RL2、... 进行独立处理)。

因此,按 ID 分组,按 Dest 查找重复行,条件为 Change = No

因此,所需的输出:

身份证 目的地 改变 Dup_with_condition_in_its_group_ID
RL1 Z32 是的 是的
RL1 Z32 没有 没有
RL1 Z33 是的 没有
RL1 Z33 是的 没有
RL2 Z32 是的 没有

谢谢。

我尝试过无条件识别重复,购买后我需要添加 AND 条件来识别重复行。

python conditional-statements duplicates
1个回答
0
投票

您只需找到“Dest”和“ID”的重复项,然后应用任意数量的过滤器。尝试以下操作:

import pandas as pd

data = {
    "ID": ["RL1", "RL1", "RL1", "RL1", "RL2"],
    "Dest": ["Z32", "Z32", "Z33", "Z33", "Z32"],
    "Change": ["Yes", "No", "Yes", "Yes", "Yes"]
}
df = pd.DataFrame(data)

# Find duplicates in 'Dest' within each group of 'ID'
duplicates = df[df.duplicated(subset=['ID', 'Dest'], keep=False)]

# Filter for rows where 'Change' is 'No' and 'Dest' is 'Z32'
duplicates = duplicates[(duplicates['Change'] == 'No') & (duplicates['Dest'] == "Z32")]

# Add a new column to mark the duplicates
df['Dup_with_condition_in_its_group_ID'] = False
df.loc[duplicates.index, 'Dup_with_condition_in_its_group_ID'] = True

print(df)

输出:

    ID Dest Change  Dup_with_condition_in_its_group_ID
0  RL1  Z32    Yes                               False
1  RL1  Z32     No                                True
2  RL1  Z33    Yes                               False
3  RL1  Z33    Yes                               False
4  RL2  Z32    Yes                               False
© www.soinside.com 2019 - 2024. All rights reserved.