我想删除熊猫数据框中的行,其中一个列A中的值是重复的,而其他某些列B中的值不是给定A的重复。一个说明性示例:
df = pd.DataFrame({'A': ['cat', 'dog', 'cat', 'cat', 'bat'],
'B': ['x', 'y', 'x', 'z', 'z'],
'C': [10, 20, 30, 40, 50]})
所需的输出将第3行删除,因为“ cat”行是重复的,而“ z”在“ cat”行中是不同的:
df.drop_duplicates('A')
删除第2行和第3行,df.drop_duplicates(subset=['A', 'B'])
删除第2行;我在这里 [1]都找不到。
答案 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