pandas drop_duplicates 其他两个列值的条件

pandas drop_duplicates condition on two other columns values

我有一个包含 A、B 和 C 列的数据框。 A列是重复的地方。 B 列是电子邮件值或 NaN 所在的位置。 C 列是 'wait' 值或数字所在的位置。 我的数据框在 A 中有重复值。我想保留那些在 B 中具有非 NaN 值而在 C 中具有非 'wait' 值的值(即数字)。 我怎么能在 df 数据帧上做到这一点? 我试过 df.drop_duplicates('A') 但我没有在其他列上看到任何条件

编辑: 示例数据:

df=pd.DataFrame({'A':[1,1,2,2,3,3],'B':['a@b.com',np.nan,np.nan,'c@d.com','np.nan',np.nan],'C':[123,456,567,'wait','wait','wait']})
>>> df
   A        B     C
0  1  a@b.com   123
1  1      NaN   456
2  2      NaN   567
3  2  c@d.com  wait
4  3   np.nan  wait
5  3      NaN  wait

我想要一个结果数据框

>>> df
   A        B     C
0  1  a@b.com   123
1  2  c@d.com   567
2  3   np.nan  wait

谢谢 最好的,

解决方案按 A, C 列排序,首先测试是否匹配 wait,然后如果每个组按列 A:

存在,则获取第一个非缺失值
df = df.sort_values(['A', 'C'], key = lambda x: x.eq('wait')).groupby('A').first()
print (df)
         B     C
A               
1  a@b.com   123
2  c@d.com   567
3   np.nan  wait