首页 > 解决方案 > Groupby 并将特定函数应用于某些列并获取 df Pandas 的第一个或最后一个值

问题描述

基于上一篇文章:Groupby and apply a specific function to certain columns and another function to the rest of the df Pandas

我想对具有大量列的数据框进行分组,但仅将函数(sum、mean 等)应用于两列并获取剩余列的第一个值。我怎样才能做到这一点?在引用的帖子中,以下代码有效,但是当我将“esle x.mean()”替换为“esle x.first()”时,它不再有效。

df = df.groupby('id').agg(lambda x : x.count() if x.name in ['var1','var2'] else x.mean())

有任何想法吗?

标签: pythonpandasgroup-by

解决方案


尝试使用x.iloc[0]第一个值和x.iloc[-1]最后一个值:

df = df.groupby('id').agg(lambda x : x.count() if x.name in ['var1','var2'] else x.iloc[0])

推荐阅读