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

如何对多层索引pandas groupby对象应用自定义函数计算用户趋势斜率

实现方案

直接对第一层索引user_id分组调用apply即可,无需手动循环构造字典,代码如下:

slope_result = grouped_count_pm.groupby(level="user_id")[("operations_type", "count")].apply(
    lambda x: trendline(np.array(x))
).reset_index(name="slope")

代码说明

  • groupby(level="user_id")直接指定按多层索引的第一层分组,不需要额外提取用户列表做循环
  • 通过[("operations_type", "count")]直接定位聚合后的多层列名,精准获取计数值
  • apply会自动将每个用户对应的所有计数值序列传入自定义函数,最终通过reset_index把索引转为普通列,直接得到仅包含user_id和slope两列的DataFrame结果,和原有循环逻辑计算结果完全一致。

优化点

  1. 删掉原有循环中冗余的trans_grouped_count_pm.transform(trendline)代码,该语句无赋值操作,不影响结果只会增加无效计算
  2. 如果你的trendline函数支持直接传入pandas Series对象,可以省略np.array()转换,直接写lambda x: trendline(x)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:54:01