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

如何用Python按日期分组统计日期区间内的记录数?

Python实现日期区间内日期计数统计

需求说明

给定包含起始日期(Start_date)和结束日期(End_Date)的数据集,统计每个日期在多少个区间内出现,最终按日期分组输出计数结果。

示例数据

原始数据:

indexStart_dateEnd_Date
12020-01-012020-01-02
22020-01-012020-01-03
32020-01-022020-01-04

期望输出:

indexdatecount
12020-01-012
22020-01-023
32020-01-032
42020-01-041

实现代码

import pandas as pd

# 构造原始数据集
raw_data = {
    'index': [1, 2, 3],
    'Start_date': ['2020-01-01', '2020-01-01', '2020-01-02'],
    'End_Date': ['2020-01-02', '2020-01-03', '2020-01-04']
}
df = pd.DataFrame(raw_data)

# 将字符串日期转换为datetime类型,便于日期序列生成
df['Start_date'] = pd.to_datetime(df['Start_date'])
df['End_Date'] = pd.to_datetime(df['End_Date'])

# 遍历每行数据,生成区间内所有日期并收集
all_dates = []
for _, row in df.iterrows():
    # 生成包含起始和结束日期的每日序列
    date_range = pd.date_range(start=row['Start_date'], end=row['End_Date'], freq='D')
    all_dates.extend(date_range)

# 统计各日期出现次数,按日期排序并整理结构
count_result = pd.Series(all_dates).value_counts().sort_index().reset_index()
count_result.columns = ['date', 'count']

# 添加自增索引列
count_result.insert(0, 'index', range(1, len(count_result)+1))

# 将日期格式转回字符串(与示例格式保持一致)
count_result['date'] = count_result['date'].dt.strftime('%Y-%m-%d')

# 输出结果
print(count_result)

代码说明

  1. 日期类型转换:将字符串格式的日期转为datetime类型,是生成日期序列的前提。
  2. 生成日期序列:通过pd.date_range生成每个区间内的所有日期,确保包含起始和结束日期。
  3. 统计与排序:用value_counts()统计日期出现次数,sort_index()保证日期按时间顺序排列。
  4. 结构调整:添加自增索引列,并将日期转回字符串格式,匹配期望输出的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:09:24