删除重复id,保留if value =某个值,否则保留第一个副本


>>> df = pd.DataFrame({'id': ['1', '1', '2', '2', '3', '4', '4', '5', '5'],
...                    'value': ['keep', 'y', 'x', 'keep', 'x', 'Keep', 'x', 'y', 'x']})
>>> print(df)
id value
0  1  keep
1  1     y
2  2     x
3  2  keep
4  3     x
5  4  Keep
6  4     x
7  5     y
8  5     x

在本例中,我们的想法是保留索引值0、3、4、5,因为它们与具有特定值== ' keep '和7的重复id相关联(因为它是id 5的第一个重复值)。

在您的情况下,尝试使用idxmax

out = df.loc[df['value'].eq('keep').groupby(df.id).idxmax()]
Out[24]: 
id value
0  1  keep
3  2  keep
4  3     x
5  4  Keep
7  5     y

最新更新