如何使用pandas.date_range创建包含往年日期的DataFrame
实现方案
pandas的date_range方法的periods参数仅接受非负整数,用于指定生成的时间点数量,负数会触发参数校验报错,你可以用以下两种方案实现生成过往日期的需求:
方案1:使用
end参数替代start参数,直接向前生成指定数量的时间点
如果你需要的是每年年末(12月31日)的日期序列,freq='Y'规则可以直接复用,代码如下:import pandas as pd # 生成从2021年往前5年的年末日期序列,默认按从早到晚排序 df = pd.DataFrame({'Years': pd.date_range(end='2021-09-21', periods=5, freq='Y')}) # 如果需要日期按从晚到早排序,对生成的序列反转即可 df = pd.DataFrame({'Years': pd.date_range(end='2021-09-21', periods=5, freq='Y')[::-1]})方案2:基于基准日期手动做年偏移,适配同月同日的需求
如果你需要生成的是和基准日期(2021-09-21)同月同日的历史日期序列,用DateOffset做偏移计算更灵活:import pandas as pd base_date = pd.to_datetime('2021-09-21') # 生成包含基准日期在内的5年同天日期序列,按从晚到早排序 year_list = [base_date - pd.DateOffset(years=i) for i in range(5)] df = pd.DataFrame({'Years': year_list})
内容的提问来源于stack exchange,提问作者Anirban Nag 'tintinmj'
相关产品推荐
相关产品推荐

