使用pandas 2.2.2与Python3.11,pd.date_range为何未包含指定结束日期?
为什么pandas date_range用freq='1M'时未包含预期的结束日期?
核心原因
问题出在对两个参数的理解偏差上:
freq='1M'的实际作用:这个频率代表「月末频率(Month End)」,生成的是每个月的最后一天。你期望的2024-04-30 04:01:40+00:00是4月的月末日期,但这个日期晚于你指定的end_date(2024-04-15T00:00:00Z),因此不会被纳入生成范围。inclusive='both'的真实含义:这个参数的作用是当start或end恰好是频率生成的日期点时,将它们包含进去,而非强制生成超过end_date的日期。你的end_date是4月15日,不属于任何月末日期,所以该参数无法触发生成4月末的日期。
解决方案
如果想要包含2024年4月末的日期,只需把end_date调整为不早于2024年4月30日即可,示例代码如下:
import pandas as pd start_date = pd.to_datetime('2023-04-05T04:01:40Z') end_date = pd.to_datetime('2024-04-30T00:00:00Z') # 修改为4月末及以后的日期 full_date_range = pd.date_range(start=start_date, end=end_date, freq='1M', inclusive='both') for date in full_date_range.to_list(): print(date)
运行后就会输出包含2024-04-30 04:01:40+00:00的完整日期范围。
内容的提问来源于stack exchange,提问作者glades
相关产品推荐
相关产品推荐

