首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas --Groupby多列返回最后一个值

Pandas --Groupby多列返回最后一个值
EN

Stack Overflow用户
提问于 2020-09-18 00:27:38
回答 1查看 30关注 0票数 1

有人问过类似的问题,但找不到我的确切案例(理想情况下没有循环)。我有过

代码语言:javascript
运行
复制
df  
    A  B  C 
    1 30 101
    1 31 220
    1 32 310
    2 30 400
    2 31 555
    2 32 616
    3 30 777
    3 31 703
    3 32 844

我想创建'D‘,其中'B’的groupby 'A‘和'Last’返回‘C’的值:

代码语言:javascript
运行
复制
A  B  C  D
1 30 101 310
1 31 220 310
1 32 310 310
2 30 400 616
2 31 555 616
2 32 616 616
3 30 777 844
3 31 703 844
3 32 844 844

我试过了

代码语言:javascript
运行
复制
df['D'] = df.groupby(['A', 'B']).agg({'C': ['last']})

但是get

代码语言:javascript
运行
复制
TypeError: incompatible index of inserted column with frame index

然后

代码语言:javascript
运行
复制
df['D'] = df.groupby(['A', 'B']).agg({'C': ['last']}).reset_index(0,drop=True)

并获取

代码语言:javascript
运行
复制
ValueError: cannot reindex from a duplicate axis

感谢您的任何帮助

EN

回答 1

Stack Overflow用户

发布于 2020-09-18 00:29:25

你可以凑合一下:

代码语言:javascript
运行
复制
df['D'] = df.sort_values('B').groupby('A')['C'].transform('last')

输出:

代码语言:javascript
运行
复制
   A   B    C    D
0  1  30  101  310
1  1  31  220  310
2  1  32  310  310
3  2  30  400  616
4  2  31  555  616
5  2  32  616  616
6  3  30  777  844
7  3  31  703  844
8  3  32  844  844
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63942369

复制
相关文章

相似问题

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