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

如何在pandas中按月份分组对Sku哑变量求和并统计唯一账户数

Pandas分组生成哑变量并统计唯一值的解决方法

你之前的写法只对Sku列单独做了哑变量处理,丢失了Acct_id列的信息,所以没法统计唯一账户数。调整方案如下:

基础实现(适配示例数据)

# 生成Sku哑变量并合并到原DataFrame
df = pd.get_dummies(df, columns=['Sku'], prefix='', prefix_sep='')

# 按月份分组聚合计算
res = df.groupby('Month', as_index=False).agg(
    book = ('book', 'sum'),
    phone = ('phone', 'sum'),
    total_accounts = ('Acct_id', 'nunique')
)

通用写法(适配Sku取值多的场景)

如果Sku列有很多取值,不需要手动列所有品类,可直接用动态规则实现:

sku_list = df['Sku'].unique()
df = pd.get_dummies(df, columns=['Sku'], prefix='', prefix_sep='')

# 构造聚合规则字典
agg_rule = {sku: 'sum' for sku in sku_list}
agg_rule['Acct_id'] = 'nunique'

# 分组计算后重命名账户统计列
res = df.groupby('Month', as_index=False).agg(agg_rule).rename(columns={'Acct_id': 'total_accounts'})

运行后得到的res就是你需要的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:01