在数据帧中,尝试在排序后删除重复项,尽管仅针对特定值。 DF看起来像
Fruit value
apple 1
orange 2
pear 1
pear 2
pear 3
仅当值是pear时,我才想删除重复项,并保留梨的最高值。
我已将当前的DF分为2个: 1.苹果和橙子-DF1 2.配梨-DF2 3.降序排列 4.删除梨2和梨1 5.串联的DF1和DF2
这看起来很麻烦,所以想知道是否有更简单的方法来实现这一目标。
Fruit value
apple 1
orange 2
pear 3
答案 0 :(得分:2)
在您的情况下,将它们拆分,然后drop_duplicates
,然后concat
再拆分
df1=df.loc[df.Fruit.eq('pear')]
pd.concat([df.drop(df1.index),df1.sort_values('value').drop_duplicates('Fruit',keep='last')]).sort_index()
Out[111]:
Fruit value
0 apple 1
1 orange 2
4 pear 3
答案 1 :(得分:2)
您将需要两个条件。一个用于重复检查(保留最大值),另一个用于水果:
m1 = df.sort_values('value', ascending=False).duplicated('Fruit')
m2 = df['Fruit'].eq('pear')
df[~(m1 & m2)]
Fruit value
0 apple 1
1 orange 2
4 pear 3
答案 2 :(得分:0)
排序后尝试
df.sort_values(by='value',ascending=[False],inplace=True)
df = df[~((df['fruit'].duplicated()) &(df['fruit']=='pear'))]
df.sort_values(by='value',ascending=[True],inplace=True)