微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

聚合具有相同id号的行并根据聚合输入列值

如何解决聚合具有相同id号的行并根据聚合输入列值

df = pandas.DataFrame( { 
    "ID" : ["1123","2325","9788","1123","5421"],"Type" : ["Red","Black","Red","Black"] } )

df 应如下所示 - 请注意,ID 号 1123 和 9788 同时具有黑色和红色“类型”

     ID     Type
0   1123     Red
1   2323    Black
2   9788    Black
3   1123    Black
4   9788     Red
5   5421    Black

我想编写一些聚合行的代码。如果 ID 号同时具有黑色和红色“类型”,我希望它显示为红色,否则为黑色,如下所示。

     ID     Type
0   1123    Red
1   2323    Black
2   9788    Red
3   5421    Black

解决方法

只需 pip install opencv-contrib-python 并取 groupby 值(因为“红色”>“黑色”):

max

输出:

df.groupby('ID',as_index=False)['Type'].max()

更新:如果您有更多类型,您可以转换为有序分类,指定所需的顺序,然后以完全相同的方式使用 ID Type 0 1123 Red 1 2325 Black 2 5421 Black 3 9788 Red groupby

max

这里我们将有“黑”

,

类型按顺序排序,drop_duplicates按“ID”,保留你想要的类型。

df['order_tag'] = df['Type'].map({'Red':1,'Black':2})
df.sort_values('order_tag').drop_duplicates('ID',keep='first').sort_index()

输出:

     ID   Type  order_tag
0  1123    Red          1
1  2325  Black          2
4  9788    Red          1
5  5421  Black          2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。