我有一个这样的数据框:
A B C
12 true 1
12 true 1
3 nan 2
3 nan 3
我想删除列A的值重复的所有行,但仅当列B的值为“true”时才会删除。
我想到的结果数据框是:
A B C
12 true 1
3 nan 2
3 nan 3
我尝试使用:df.loc[df['B']=='true'].drop_duplicates('A', inplace=True, keep='first')
但它似乎不起作用。
感谢您的帮助!
答案 0 :(得分:4)
你可以起诉pd.concat
将df拆分为B
df=pd.concat([df.loc[df.B!=True],df.loc[df.B==True].drop_duplicates(['A'],keep='first')]).sort_index()
df
Out[1593]:
A B C
0 12 True 1
2 3 NaN 2
3 3 NaN 3
答案 1 :(得分:4)
df[df.B.ne(True) | ~df.A.duplicated()]
A B C
0 12 True 1
2 3 NaN 2
3 3 NaN 3