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

如何使用Pandas按连续月份拆分DataFrame?

解决方案

要实现按连续月份分组拆分DataFrame,你可以按照以下步骤操作:

1. 转换日期列类型并确保数据按时间排序

首先将Month列转换为datetime类型,方便后续计算时间差;同时确保数据是按时间顺序排列的:

import pandas as pd

# 转换Month列为datetime类型
df['Month'] = pd.to_datetime(df['Month'], format='%m/%d/%Y')
# 按Month列排序(如果原始数据未排序)
df = df.sort_values('Month').reset_index(drop=True)

2. 生成连续月份分组标识

计算每行与前一行的月份间隔,当间隔不等于1个月时,标记为新分组的起点,最终通过累加生成分组ID:

# 计算当前月份与前一行月份的间隔(单位:月)
df['month_gap'] = (df['Month'].dt.year - df['Month'].shift(1).dt.year) * 12 + (df['Month'].dt.month - df['Month'].shift(1).dt.month)
# 当间隔不等于1时,标记为新分组,累加得到group_id
df['group_id'] = (df['month_gap'] != 1).cumsum()

3. 按分组ID拆分DataFrame

通过groupby按group_id分组,即可得到两个连续月份的数据集:

# 拆分得到分组后的DataFrame列表
grouped_dfs = [group for _, group in df.groupby('group_id')]

# 提取2020年和2021年的两组数据(可按需删除辅助列)
df_2020 = grouped_dfs[0].drop(columns=['month_gap', 'group_id'])
df_2021 = grouped_dfs[1].drop(columns=['month_gap', 'group_id'])

说明

  • 转换日期类型是核心前提,确保能准确计算月份间隔;
  • 计算月份间隔时,通过年份差和月份差结合的方式,避免了仅用天数计算的误差(不同月份天数不同);
  • 这种方法具有通用性,即使后续出现更多不连续的月份段,也能自动拆分出对应的分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:10:55