将pandas.date_range
与开始日期、频率和期间一起使用时,如果将开始日期用作一个月的最后一天,则日期范围将向上舍入。
这似乎是一个无声的边缘情况错误。如果不是窃听器,知道为什么吗?
比如说,
import pandas as pd
start_date = pd.Timestamp(2023, 5, 31)
date_range = pd.date_range(start=start_date, freq="MS", periods=6)
导致
DatetimeIndex(['2023-06-01', '2023-07-01', '2023-08-01', '2023-09-01',
'2023-10-01', '2023-11-01'],
dtype='datetime64[ns]', freq='MS')
从文档中,我预计它将在5月开始,10月结束:
DatetimeIndex(['2023-05-01', '2023-06-01', '2023-07-01', '2023-08-01', '2023-09-01',
'2023-10-01'],
dtype='datetime64[ns]', freq='MS')
我认为这与inclusive
参数有关,但这也不是原因。
2条答案
按热度按时间2jcobegt1#
pd.date_range
用于生成start
和end
之间的日期范围。如果2023-05-01
小于开始日期2023-05-31
,则它将永远不会到达该日期。要做你想做的事情,你可以用1替换pd.Timestamp
的day。oipij1gg2#
documentation读取
因此,由于提供的日期是
pd.Timestamp(2023, 5, 31)
,因此满足start <= x
的第一个"MS"
(月初)日期是下一个月。