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

Pandas groupby分组后如何新增withdraw_#列统计提现次数

实现方法

不需要把分组结果单独转成统计表再合并回原表,用pandas的transform方法可以直接把分组统计结果对齐到原表行,一步生成目标列。

  • 原始DataFrame参考样式:
    原始DataFrame样式
  • 目标处理后DataFrame参考样式:
    目标处理后的DataFrame样式

核心实现代码

不管你之前有没有单独赋值分组对象,直接执行下面的代码即可新增withdraw_#列:

import pandas as pd
# 假设你的原始DataFrame变量名为df
df['withdraw_#'] = df.groupby('parent_user_id')['parent_user_id'].transform('count')

如果你已经提前把分组对象存为变量了,直接复用即可,不需要重复执行分组:

# 你之前已经执行的分组代码
grouped = df.groupby('parent_user_id')
# 直接用分组对象生成新列
df['withdraw_#'] = grouped['parent_user_id'].transform('count')

特殊场景处理

如果你的数据里存在无效提现记录(比如提现金额为0、状态为失败的记录),需要先过滤有效数据再统计,避免计数不准:

# 示例:过滤掉提现金额<=0、提现状态不是成功的无效记录
valid_data = df[(df['withdraw_amount'] > 0) & (df['withdraw_status'] == 'success')]
# 基于有效数据统计次数
df['withdraw_#'] = valid_data.groupby('parent_user_id')['parent_user_id'].transform('count')
# 没有有效提现记录的用户对应值为NaN,可填充为0并转成整数类型
df['withdraw_#'] = df['withdraw_#'].fillna(0).astype(int)

说明:transform方法会保持原DataFrame的索引顺序返回统计值,不会像普通groupby.count()那样把结果压缩为每组1行,所以可以直接赋值为原表的新列,不需要做额外的merge拼接操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:03:22