当相同id的状态更改时,删除重复值

2024-03-29 05:43:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想删除规则显示为NOT_OK的行,但对于同一id的一个值,它已经OK了

对于id,如果所有值都不正常,则保留所有值

例如,对于此数据集:

ID RULE
1   OK
1   NOT_OK
2   NOT_OK
2   NOT_OK

期望输出:

ID RULE
1    OK
2   NOT_OK
2   NOT_OK

2条回答

drop duplicates函数应该可以工作:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html

只是df.drop_duplicates()

假设您的数据集是变量“df”中的数据帧。可能有一种更有效的方法,但这是可行的:

ok_records = list(df['ID'][df['RULE'] == 'OK'])
df1 = df[(df['ID'].isin(ok_records)) & (df['RULE'] != 'NOT_OK')]
df2 = df[(df['RULE'] == 'NOT_OK') & (~df['ID'].isin(ok_records))]
final_df = pd.concat([df1, df2])

相关问题 更多 >