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

如何用Python计算仅与前一日对比的每日新增用户数量

实现思路

核心逻辑是先按日期分组得到每日用户集合,再将当日用户集合与前一日的做差集,差集的元素数量即为当日新增用户数,完全匹配你提到的统计规则。

代码实现

首先安装依赖(如果环境没有pandas):
pip install pandas

完整代码如下:

import pandas as pd

# 构造示例数据,实际使用时可替换为pd.read_csv()等读取自己的数据源
data = {
    'date': ['2012-09-29', '2012-09-29', '2012-09-30', '2012-09-30', '2012-10-01', '2012-10-01'],
    'users': ['A', 'B', 'A', 'C', 'B', 'C']
}
df = pd.DataFrame(data)

# 1. 按日期分组得到每日用户集合,同时按日期升序排序
daily_users = df.groupby('date')['users'].apply(set).sort_index()

# 2. 遍历计算每日新增用户数
result = []
# 从第2天开始计算,第1天无前一天数据无法对比
for i in range(1, len(daily_users)):
    current_date = daily_users.index[i]
    current_users = daily_users.iloc[i]
    prev_users = daily_users.iloc[i-1]
    # 取差集:当前日期存在、前一天不存在的用户
    new_user_count = len(current_users - prev_users)
    result.append({'date': current_date, 'users': new_user_count})

# 3. 转换为DataFrame输出,若需要索引从1开始可加result_df.index = result_df.index + 1
result_df = pd.DataFrame(result)
print(result_df)
输出结果
date  users
0  2012-09-30      1
1  2012-10-01      1

和你期望的输出完全一致。

可选优化(处理非连续日期)

如果你的数据存在日期中断的情况(比如缺少2012-09-30的数据),不想和间隔超过1天的日期对比,可以增加日期差校验逻辑:

# 先把日期转为datetime格式
daily_users.index = pd.to_datetime(daily_users.index)
for i in range(1, len(daily_users)):
    current_date = daily_users.index[i]
    prev_date = daily_users.index[i-1]
    # 仅相邻两天的日期才计算新增
    if (current_date - prev_date).days != 1:
        continue
    # 剩余逻辑和之前保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:06:04