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

如何生成包含START与END日期区间内所有年份的DataFrame?

生成日期区间内所有年份的DataFrame解决方案

实现步骤

  1. 导入依赖库
import pandas as pd
  1. 准备/读取原始数据
    这里模拟包含START和END列的数据集:
# 示例原始数据,START、END可为日期字符串或年份数值
data = {
    'START': ['2010-01-01', '2015-05-10'],
    'END': ['2013-12-31', '2018-08-20']
}
df = pd.DataFrame(data)
  1. 处理年份区间并生成目标DataFrame
# 若START/END是日期格式,先提取年份;如果已是年份数值,可跳过这两行
df['start_year'] = pd.to_datetime(df['START']).dt.year
df['end_year'] = pd.to_datetime(df['END']).dt.year

# 为每行生成START到END之间的所有年份列表
df['YEAR'] = df.apply(lambda row: list(range(row['start_year'], row['end_year'] + 1)), axis=1)

# 将年份列表展开为多行,并清理冗余列
final_df = df.explode('YEAR').drop(['start_year', 'end_year'], axis=1)

# 调整列顺序(可选,匹配目标格式)
final_df = final_df[['START', 'END', 'YEAR']]
  1. 查看结果
    运行后final_df即为所需样式,示例输出:
START         END  YEAR
0  2010-01-01  2013-12-31  2010
0  2010-01-01  2013-12-31  2011
0  2010-01-01  2013-12-31  2012
0  2010-01-01  2013-12-31  2013
1  2015-05-10  2018-08-20  2015
1  2015-05-10  2018-08-20  2016
1  2015-05-10  2018-08-20  2017
1  2015-05-10  2018-08-20  2018

注意事项

  • 如果原始数据中START和END直接是年份数值(如2010),无需执行日期转换,直接赋值df['start_year'] = df['START']即可
  • 使用range(row['start_year'], row['end_year'] + 1)是因为Python的range是左闭右开区间,加1才能包含结束年份

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:35:32