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

如何使用Pandas按指定天数间隔分组时间戳并统计各类标签数量

Pandas按自定义天数间隔分组统计标签数量方案

原始数据集说明

数据集包含用户名称、创建日期、标签三个字段,其中created日期列非连续,样例如下:

name created    label         
0   leahbirdjohnso2 2020-02-20  PATRIOTSAWAKENED    
1   leahbirdjohnso2 2020-02-21  TRUMP2020           
2   carol2busy      2020-02-23  TRUMP2020   
3   carol2busy      2020-02-24  TRUMP2020   
4   GODRUS          2020-02-25  FOXNEWS 

需求说明

支持自定义时间间隔(如2天、3天、7天等),按时间窗口分组后,统计每个窗口内各标签的出现次数,不同间隔的预期输出样例如下:

  • 间隔为2天的预期输出:
created     counts  label
2020-02-20  1   PATRIOTSAWAKENED
            1   TRUMP2020
2020-02-23  1   TRUMP2020       
2020-02-24  1   FOXNEWS
            1   TRUMP2020
  • 间隔为3天的预期输出:
created     counts  label
2020-02-20  1   PATRIOTSAWAKENED
            1   TRUMP2020
2020-02-23  2   TRUMP2020
            1   FOXNEWS

实现代码

import pandas as pd

# 数据预处理:将created列转为日期类型,这一步必须做,避免日期运算报错
df['created'] = pd.to_datetime(df['created'])

# 自定义间隔天数,可按需修改为7、15等任意值
interval_days = 3

# 按时间间隔+标签分组统计
res = (df
       # 时间窗口从数据集最早日期开始计算,按指定天数划分
       .groupby([pd.Grouper(key='created', freq=f'{interval_days}D', origin='start'), 'label'])
       # 统计每组行数即为标签出现次数
       .size()
       .reset_index(name='counts')
      )

# 可选:调整显示格式,和示例输出保持一致,重复日期只显示一次
res['created'] = res['created'].dt.strftime('%Y-%m-%d')
res.loc[res['created'].duplicated(), 'created'] = ''

# 输出结果
print(res)

逻辑说明

  • pd.Grouper是Pandas原生的时间分组工具,直接支持传入nD格式的自定义天频率,无需手动计算时间区间
  • origin='start'参数指定时间窗口的起始点为数据集最早的日期,保证分组逻辑和示例完全匹配
  • 最终得到的结果可直接用于后续分析,可选的格式处理仅为了对齐示例的展示效果,不影响统计结果准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:24:04