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

Python月度数据聚合:合并连续日期行并检测缺失月份

合并连续月度数据并检测日期断层

我有一份包含月度数值的数据集,需要将连续的多行数据合并为一行——判断标准是上一行的End date与下一行的Start date完全一致。如果中间存在日期不连续的情况(即缺失月份),必须能识别出来,不进行合并。

输入示例:

Start date         End date           Value
1/1/2022           1/31/2022           3
1/31/2022          2/28/2022           4
2/28/2022          3/31/2022           5

输出示例:

Start_date  End_date  Total_Value
01/01/2022  03/31/2022          12

实现思路

  1. 转换日期列为datetime类型,避免字符串比较的误差;
  2. 通过对比当前行Start date与上一行End date,生成连续数据的分组标识;
  3. 按分组聚合,取每组最早的起始日期、最晚的结束日期,求和数值;
  4. 加入断层检测逻辑,输出所有日期不连续的位置。

代码实现

import pandas as pd

def merge_continuous_monthly_data(df):
    # 转换日期列为datetime格式
    df['Start date'] = pd.to_datetime(df['Start date'], format='%m/%d/%Y')
    df['End date'] = pd.to_datetime(df['End date'], format='%m/%d/%Y')
    
    # 生成连续数据分组:当前行起始日期≠上一行结束日期则新建分组
    df['group_id'] = (df['Start date'] != df['End date'].shift(1)).cumsum()
    
    # 检测并输出日期断层
    gap_rows = df[df['Start date'] != df['End date'].shift(1)].iloc[1:]
    if not gap_rows.empty:
        print("检测到日期断层,涉及行:")
        print(gap_rows[['Start date', 'End date']].to_string(index=False))
    
    # 按分组聚合数据
    merged_df = df.groupby('group_id').agg(
        Start_date=('Start date', 'min'),
        End_date=('End date', 'max'),
        Total_Value=('Value', 'sum')
    ).reset_index(drop=True)
    
    # 转换回原始日期字符串格式
    merged_df['Start_date'] = merged_df['Start_date'].dt.strftime('%m/%d/%Y')
    merged_df['End_date'] = merged_df['End_date'].dt.strftime('%m/%d/%Y')
    
    return merged_df

# 测试示例
test_data = {
    'Start date': ['1/1/2022', '1/31/2022', '2/28/2022'],
    'End date': ['1/31/2022', '2/28/2022', '3/31/2022'],
    'Value': [3, 4, 5]
}
test_df = pd.DataFrame(test_data)
result = merge_continuous_monthly_data(test_df)
print("\n合并结果:")
print(result.to_string(index=False))

效果说明

  • 连续数据会被合并为一行,起始日期取最早值,结束日期取最晚值,数值求和;
  • 若存在日期断层(比如某行Start date≠上一行End date),会主动输出断层位置,且断层前后的数据会分为不同分组,不会被合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:49:57