Pandas date_range非预期行为[重复]

r1zhe5dt  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(165)

此问题在此处已有答案

How to include both ends of a pandas date_range()(2个答案)
2天前关闭。
这篇文章是昨天编辑并提交审查的。
如果我运行:

pd.date_range('2022-01-01 15:00', '2023-02-02 00:00', freq='YS')

我收到:

DatetimeIndex(['2022-01-01 15:00:00'], dtype='datetime64[ns]', freq='AS-JAN')

我希望在返回中也能得到2023-01-01 15:00:00,即

DatetimeIndex(['2022-01-01 15:00:00', '2023-01-01 15:00:00'], dtype='datetime64[ns]', freq='AS-JAN')

感觉这真的很奇怪。我是错过了什么还是有bug?我如何才能达到预期的行为?
谢谢
编辑:同意s_pike的观点,这种行为看起来非常违反直觉,我会说这是一个bug。

q9yhzks0

q9yhzks01#

您可以通过以下方式获得所需的输出:

pd.date_range('2022-01-01 15:00', '2023-01-01 15:00', freq='YS')

#DatetimeIndex(['2022-01-01 15:00:00', '2023-01-01 15:00:00'], dtype='datetime64[ns]', freq='AS-JAN')

如果将日期更改为二月,则必须将时间更改为大于或等于开始日期中给定时间。

pd.date_range('2022-01-01 15:00', '2023-02-02 15:00', freq='YS')

#DatetimeIndex(['2022-01-01 15:00:00', '2023-01-01 15:00:00'], dtype='datetime64[ns]', freq='AS-JAN')

如果您的时间少于开始日期中指定的时间,则不会获得结果:

pd.date_range('2022-01-01 15:00', '2023-02-02 14:59', freq='YS')

#DatetimeIndex(['2022-01-01 15:00:00'], dtype='datetime64[ns]', freq='AS-JAN')

以下是文件的链接:
https://pandas.pydata.org/docs/reference/api/pandas.date_range.html
https://pandas.pydata.org/docs/user_guide/timeseries.html#timeseries-offset-aliases

xlpyo6sf

xlpyo6sf2#

你可以这样尝试,这可能会提供你预期的结果。

date_range = pd.date_range('2022-01-01 15:00', '2023-02-02 00:00', freq='AS')
date_range = date_range.union(pd.DatetimeIndex(['2023-01-01 15:00']))

这个pd.DatetimeIndex()构造函数将创建一个新的“datetimeindex”。

相关问题