Pandas分组聚合:如何批量为多列指定first函数无需逐个声明?
分组聚合时批量为多列应用
first函数的简便方法 当你有包含多列的Pandas DataFrame,需要按某列分组后,仅对指定列求和、其余所有列保留第一个值时,完全不用逐个列名指定first方法,以下是几种简便实现方式:
方法一:构造聚合字典
先筛选出需要应用first的列(排除分组键和要求和的列),再批量生成聚合规则:
# 获取除分组键V1、求和列V2外的所有列 first_columns = [col for col in df.columns if col not in ['V1', 'V2']] # 初始化聚合字典,添加V2的求和规则 agg_rules = {'V2': 'sum'} # 批量添加其余列的first规则 agg_rules.update({col: 'first' for col in first_columns}) # 执行分组聚合 summedDF = df.groupby('V1').agg(agg_rules)
方法二:利用关键字参数展开
通过字典推导生成关键字参数,直接在agg中指定:
summedDF = df.groupby('V1').agg( V2=('V2', 'sum'), **{col: (col, 'first') for col in df.columns.drop(['V1', 'V2'])} )
这两种方法都能自动适配任意数量的列,无需手动逐个列名编写first规则,不管你的DataFrame是25列还是更多,都能轻松处理。
内容的提问来源于stack exchange,提问作者i.i.k.
相关产品推荐
相关产品推荐

