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

Python Pandas如何按用户ID分组执行mean、max等多种聚合运算

解决方案

核心逻辑是分两步执行:先按用户分组计算每个用户的自定义指标(你这里是两个条件的差值),再对所有用户的指标结果做聚合。groupby + apply的组合可以满足所有按用户维度自定义计算的通用需求,你可以任意调整用户级的计算逻辑,不需要局限于差值计算。

完整可运行代码

import pandas as pd

# 示例数据
df = pd.DataFrame({'user': ['user1', 'user1',
                              'user2', 'user2'],
                   'condition': ['pl', 'md', 'pl', 'md'],
                   'value': [2, 4, 40, 42]})

# 自定义用户级指标计算函数,可根据需求修改内部逻辑
def calc_user_metric(user_group):
    pl_value = user_group.loc[user_group['condition'] == 'pl', 'value'].iloc[0]
    md_value = user_group.loc[user_group['condition'] == 'md', 'value'].iloc[0]
    # 这里返回的是每个用户的计算结果,可替换为任意你需要的用户级逻辑
    return md_value - pl_value

# 按用户分组计算每个用户的指标
user_metrics = df.groupby('user').apply(calc_user_metric)

# 对所有用户的指标执行聚合,支持mean、max、median等任意聚合函数
agg_result = user_metrics.agg(['mean', 'max', 'median'])
print(agg_result)

运行后得到的mean结果就是你预期的2。

简化写法(仅适用于固定双条件差值场景)

如果你的业务场景只是计算两个固定condition的差值,也可以用透视表简化代码:

# 转换为用户为行、condition为列的结构
pivot_df = df.pivot(index='user', columns='condition', values='value')
# 直接计算差值列后聚合
agg_result = (pivot_df['md'] - pivot_df['pl']).agg(['mean', 'max', 'median'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:04