我们有这个数据框:
身份证 | 目的地 | 改变 |
---|---|---|
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 条件来识别重复行。
您只需找到“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