按6月至次年6月的年度日期区间拆分数据集的方法咨询
按自定义年度区间(6月至次年6月)拆分数据集
原始数据集
ID date A 201806 B 201809 C 201901 D 201905 E 201906 F 202002 G 202003 H 202004
需求说明
可以按每年6月1日至次年5月31日的自定义年度区间拆分数据集,完全匹配你给出的预期结果。核心是为每条数据标记其所属的自定义年度区间,再按标记分组拆分。
实现方案(以Python Pandas为例)
以下是具体的代码实现步骤:
加载数据并转换日期格式
将date列转换为可识别的日期类型,方便后续区间判断:import pandas as pd # 构造原始数据 data = { 'ID': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'date': ['201806', '201809', '201901', '201905', '201906', '202002', '202003', '202004'] } df = pd.DataFrame(data) # 转换date列为日期类型,默认取每月第一天 df['date'] = pd.to_datetime(df['date'], format='%Y%m')定义自定义年度分组规则
为每条数据生成所属的年度区间标记:- 若日期的月份≥6,属于
[当前年份]/[当前年份+1]年度区间(如2018年6月→2018/2019) - 若日期的月份<6,属于
[当前年份-1]/[当前年份]年度区间(如2019年5月→2018/2019)
# 计算自定义年度标签 df['fiscal_year'] = df['date'].apply( lambda x: f"{x.year}/{x.year+1}" if x.month >=6 else f"{x.year-1}/{x.year}" )- 若日期的月份≥6,属于
按年度标签拆分数据集
按生成的fiscal_year列分组,得到拆分后的数据集:# 拆分数据 grouped = df.groupby('fiscal_year') # 获取第一个区间的数据集(2018/2019) df1 = grouped.get_group('2018/2019').drop('fiscal_year', axis=1) # 获取第二个区间的数据集(2019/2020) df2 = grouped.get_group('2019/2020').drop('fiscal_year', axis=1)
验证结果
- 拆分后的数据集1(对应2018年6月1日至2019年5月31日):
ID date 0 A 2018-06-01 1 B 2018-09-01 2 C 2019-01-01 3 D 2019-05-01 - 拆分后的数据集2(对应2019年6月1日至2020年4月30日):
ID date 4 E 2019-06-01 5 F 2020-02-01 6 G 2020-03-01 7 H 2020-04-01
完全匹配你预期的拆分结果。
内容的提问来源于stack exchange,提问作者NewUsr_stat
相关产品推荐
相关产品推荐

