熊猫:如果一列重复而另一列不同则删除行

时间:2019-12-13 19:45:59

标签: python pandas dataframe duplicates

我想删除熊猫数据框中的行,其中一个列A中的值是重复的,而其他某些列B中的值不是给定A的重复。一个说明性示例:

df = pd.DataFrame({'A': ['cat', 'dog', 'cat', 'cat', 'bat'],
                   'B': ['x', 'y', 'x', 'z', 'z'],
                   'C': [10, 20, 30, 40, 50]})

enter image description here

所需的输出将第3行删除,因为“ cat”行是重复的,而“ z”在“ cat”行中是不同的:

enter image description here

df.drop_duplicates('A')删除第2行和第3行,df.drop_duplicates(subset=['A', 'B'])删除第2行;我在这里 [1]都找不到。

2 个答案:

答案 0 :(得分:2)

也许是这样:

df[(~df.duplicated('A')) | df.duplicated(['A','B'])]

输出:

     A  B   C
0  cat  x  10
1  dog  y  20
2  bat  z  30
3  cat  x  40

答案 1 :(得分:2)

IIUC transform

df[df.B==df.groupby('A').B.transform('first')]
Out[11]: 
     A  B   C
0  cat  x  10
1  dog  y  20
2  cat  x  30
4  bat  z  50