首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groupby,sum,reset index &保持第一位

Groupby,sum,reset index &保持第一位
EN

Stack Overflow用户
提问于 2022-05-16 20:23:41
回答 1查看 84关注 0票数 -1

我使用以下代码,我的目标是按2列分组(在其中的几十列中),然后保留所有其他列的第一个值,同时将另外两个列的值相加。不管我尝试了什么组合,它都不起作用。

所用代码:

代码语言:javascript
复制
df1 = df.groupby(['col_1', 'Col_2'], as_index = False)[['Age', 'Income']].apply(sum).first()

我所得到的错误如下所示,这使我相信这可以通过我使用的代码的一个稍微不同的版本来完成。

代码语言:javascript
复制
TypeError: first() missing 1 required positional argument: 'offset'

任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 21:16:07

您可以使用agg为每一列配置相应的函数。

代码语言:javascript
复制
group = ['col_1', 'col_2']
(df.groupby(group, as_index=False)
 .agg({
    **{x: 'first' for x in df.columns[~df.columns.isin(group)]}, # for all columns other than grouping column
    **{'Age': 'sum', 'Income': 'sum'} # Overwrite aggregation for specific columns
 })
)

此部分{ **{...}, **{...} }将生成

代码语言:javascript
复制
{
   'Age': 'sum',
   'Income': 'sum',
   'othercol': 'first',
   'morecol': 'first'
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72265185

复制
相关文章

相似问题

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