Pandas date_range结果异常:为何未包含'2022-01-01'?
问题解答:Pandas date_range未生成2022-01-01的原因及解决办法
原因分析
你用pd.date_range("2022-01-03", "2023-12-31", freq='MS')生成的序列里没有2022-01-01,核心原因是:
freq='MS'是**每月第一天(Month Start)**的频率规则;- Pandas生成序列时,只会包含大于等于起始日期的符合频率规则的日期。
2022-01-01早于你设定的起始日期2022-01-03,所以不会被纳入结果; - 第一个符合要求的日期就是
2022-02-01(2022年1月之后的下一个月第一天)。
解决办法
方法1:修改起始日期
直接把起始日期设为2022-01-01,就能得到包含目标日期的序列:
import pandas as pd pd.date_range("2022-01-01", "2023-12-31", freq='MS')
生成的序列会从2022-01-01开始,到2023-12-01结束,完全符合预期。
方法2:手动添加目标日期
如果必须保留起始参数为2022-01-03,可以手动将2022-01-01追加到生成的序列中:
import pandas as pd dates = pd.date_range("2022-01-03", "2023-12-31", freq='MS') dates = pd.DatetimeIndex(['2022-01-01']).append(dates)
内容的提问来源于stack exchange,提问作者user3327034
相关产品推荐
相关产品推荐

