如何从pandas数据帧中的行子集中删除重复项?

时间:2018-02-22 19:04:27

标签: python pandas

我有一个这样的数据框:

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')但它似乎不起作用。

感谢您的帮助!

2 个答案:

答案 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