我有一个Pandas数据框如下:
df = DataFrame({'id' : [0,1,1,2,2], 'married' : [True,True,False,False,False]})
id married
0 0 True
1 1 True
2 1 False
3 2 False
4 2 False
我想按照id
列对此数据框进行分组,但如果married
中的值与id
的相同值不相同,也要删除整个重复项我们从使用drop_duplicates
方法获得第一行。
df.drop_duplicates(subset=["id"])
id married
0 0 True
1 1 True
3 2 False
相反,我希望将此作为我的结果
id married
0 0 True
3 2 False
答案 0 :(得分:1)
您可以.groupby
使用id
,然后使用.filter
,然后使用.drop_duplicates
:
>>> pred = lambda obj: obj['married'].nunique() == 1
>>> df.groupby('id').filter(pred).drop_duplicates('id')
id married
0 0 True
3 2 False