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

如何在Python中按月份分组并统计唯一用户数?

解决方案

你的原始DataFrame如下:

日期用户ID
2006-02-131
2006-02-142
2006-03-021
2006-02-221
2006-03-303
2006-04-011
2006-04-022
2006-04-012
2006-04-053

你期望的输出是按月份英文全称统计唯一用户数:

日期唯一用户数
February2
March2
April3

你的代码问题

你之前的代码mau = mau.groupby([mau.timestamp.dt.to_period('M'), 'userid'])存在两个核心问题:

  1. 同时按月份和用户ID分组,这会把每个用户在每个月的记录单独拆分,无法统计每月的唯一用户总数
  2. 仅执行了分组操作,没有添加聚合统计函数(比如nunique()),因此得到的只是分组对象,没有生成实际的统计结果

正确实现步骤

1. 确保日期列是datetime类型

如果你的日期列还不是datetime格式,先做类型转换:

import pandas as pd

df['日期'] = pd.to_datetime(df['日期'])

2. 提取月份英文全称

从日期列中提取月份的英文名称:

df['月份'] = df['日期'].dt.month_name()

3. 分组统计唯一用户数

按月份分组,对用户ID列统计唯一值数量,最后重命名列名匹配你的期望输出:

result = df.groupby('月份')['用户ID'].nunique().reset_index()
result.columns = ['日期', '唯一用户数']

一步到位的简洁写法

result = (df
          .assign(月份=pd.to_datetime(df['日期']).dt.month_name())
          .groupby('月份')['用户ID']
          .nunique()
          .reset_index()
          .rename(columns={'月份': '日期', '用户ID': '唯一用户数'}))

执行后得到的result就是你需要的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:50:27