Skip to main content
 首页 » 编程设计

python之Pandas之通过保留优先值,根据 Series 中的条件从 DataFrame 中删除重复行

2025年05月04日19开发

假设我有以下 DataFrame:

ID    Color 
1     Red 
2     Yellow 
1     Green 
3     Red 
1     Green 
2     Red 

假设颜色的优先级如下:

Green > Yellow > Red 

我想通过保留颜色具有最高优先级的行来删除具有重复 ID 的行。所以,对于这个例子,我想得到这个结果:

ID    Color 
1     Green 
2     Yellow 
3     Red 

有什么想法可以通过使用 pandas 函数来实现吗?我在 Internet 上做了很多研究,包括 pandas 文档,但想不出一个好的方法。任何帮助将不胜感激。

请您参考如下方法:

一旦您通过订单将颜色设置为类别 dtype,您至少可以通过两种方式执行此操作。

df['Color'] = pd.Categorical(df['Color'], categories=['Red','Yellow','Green'], ordered=True) 

选项 1:

df.sort_values('Color', ascending=False).drop_duplicates(['ID']) 

输出:

   ID   Color 
4   1   Green 
1   2  Yellow 
3   3     Red 

选项 2:

df.groupby('ID')['Color'].max() 

输出:

ID 
1     Green 
2    Yellow 
3       Red 
Name: Color, dtype: object