You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas groupby如何根据分组键是否在指定列表使用不同聚合方法

可以通过groupby.apply一步实现,实现逻辑是利用单字段分组下每个分组对象的name属性获取当前分组的ID值,判断是否属于指定列表后执行对应的聚合逻辑即可。

完整可运行代码如下:

import pandas as pd

# 构造测试数据
df = pd.DataFrame({'ID' : [1, 1, 1, 2, 2, 2, 2, 3, 3, 3],
                   'Data' : [5, 7, 6, 13, 14, 11, 10, 2, 4, 3]})
some_list = [2, 3]

# 自定义聚合函数
def custom_agg(group_df):
    # group_df.name 即为当前分组对应的ID值
    if group_df.name in some_list:
        return group_df['Data'].sum() / 4
    else:
        return group_df['Data'].mean()

# 一步执行分组聚合
result = df.groupby('ID').apply(custom_agg).reset_index(name='Data')
print(result)

运行后输出结果和需求完全一致:

ID   Data
0   1   6.00
1   2  12.00
2   3   2.25

如果偏好更简洁的写法,也可以直接用lambda表达式代替自定义函数:

result = df.groupby('ID').apply(
    lambda x: x['Data'].sum()/4 if x.name in some_list else x['Data'].mean()
).reset_index(name='Data')

内容的提问来源于stack exchange,提问作者Emi OB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:15:02