gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:27:58 25 4
gpt4 key购买 nike

假设我有以下 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

关于python - Pandas - 通过保留优先值,根据 Series 中的条件从 DataFrame 中删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55420695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com