首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Pandas groupby和分类列的最大值

Python Pandas groupby和分类列的最大值
EN

Stack Overflow用户
提问于 2018-06-10 05:27:04
回答 1查看 2.4K关注 0票数 2

我有一个Pandas数据帧,如下所示:

代码语言:javascript
复制
ID  Cat
1   SF
1   W
1   F
2   R64
2   SF
2   F

第一列是标识符,第二列包含分类数据,顺序如下:R64 < SF < F < W

我想要一个新的数据帧,它包含每个ID的最大分类值。生成的数据帧应如下所示:

代码语言:javascript
复制
ID  Cat
1   W
2   F

我尝试了来自this thread的解决方案,但它似乎不适用于分类数据:df.groupby("ID", as_index=False).Cat.max()

这种方法的结果如下所示:

代码语言:javascript
复制
ID  number
1   SF
2   SF

我像这样声明分类列:

代码语言:javascript
复制
df['Cat'] = pd.Categorical(df['Cat'], categories = ["R64", "SF", "F", "W"], ordered = True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 05:31:13

这可以通过扩展来实现。在列中定义排序:

代码语言:javascript
复制
df.Cat = pd.Categorical(
    df.Cat, categories=['R64', 'SF', 'F', 'W'], ordered=True)

现在,groupby可以工作了:

代码语言:javascript
复制
df.groupby('ID').Cat.max().reset_index()

   ID Cat
0   1   W
1   2   F

或者,使用sort_valuesgroupbyhead

代码语言:javascript
复制
df.sort_values(['ID', 'Cat'], ascending=[True, False]).groupby('ID').head(1)

   ID Cat
1   1   W
5   2   F
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档