我有一个数据框,其中基于 "Reason" 列存在重复行。
No Reason
123 -
123 -
345 Bad Service
345 -
546 Bad Service
546 Poor feedback
我已根据以下条件对这些行进行了子集筛选:
df_duplicates = df[df['No'].duplicated() == True]
我正试图循环遍历上述行的子集,并在相应的重复行的“原因”既缺失时,过滤它们;或者任何一个缺失时,也要过滤。
因此结果将是:
No Reason
123 -
123 -
345 Bad Service
345 -
我尝试循环并按对处理。不确定是否有一种在 Pandas 中高效完成此操作的方法。如有线索,请提供帮助。
out = df[(df['Reason'].eq('-')|df.duplicated(['No','Reason'],keep=False)).groupby(df['No']).transform('any')]
来处理 NaN 值,请将.eq('-')
替换为.isna()
。 - anky