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

Pandas:如何按用户计算每日金额求和后的中位数

解决方案

你现在的问题出在:第一次groupby(['user_id', 'date'])得到的是包含两层索引(用户ID、日期)的Series,直接调用.median()会对所有用户的每日求和值计算全局中位数,而非按用户单独计算。

要实现每个用户的每日金额求和值的中位数,有两种简洁的实现方式:

方式一:基于现有结果二次分组

先保存每日求和的结果,再按user_id再次分组计算中位数:

# 先得到每个用户每天的金额总和
daily_money_sum = df_append.groupby(['user_id', 'date'])['money'].sum()
# 按用户ID分组,计算每组(即单个用户的所有每日求和值)的中位数
user_daily_sum_median = daily_money_sum.groupby('user_id').median()

方式二:一步完成分组计算

利用groupby的level参数,直接对第一层索引(user_id)分组计算中位数:

user_daily_sum_median = df_append.groupby(['user_id', 'date'])['money'].sum().groupby(level='user_id').median()

或者用嵌套分组的写法,逻辑更直观:

user_daily_sum_median = df_append.groupby('user_id').apply(
    lambda user_data: user_data.groupby('date')['money'].sum().median()
)

执行后你会得到一个以user_id为索引,对应值为该用户所有每日金额求和值中位数的Series。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:45:43