为了账号安全,请及时绑定邮箱和手机立即绑定

奇怪的熊猫 date_range 行为

奇怪的熊猫 date_range 行为

慕无忌1623718 2023-06-27 13:50:28
date_range()当开始日期和结束日期之间的小时数不匹配并且频率设置为Months时, pandas函数会显示奇怪的行为。>>> pd.date_range("2020-05-31 22:00:00", "2020-08-29 21:00:00", freq="1M")DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00'], dtype='datetime64[ns]', freq='M')在此示例中,我希望索引中出现“2020-07-31 22:00:00”,但事实并非如此。尽管如此,以下示例仍按预期工作:>>> pd.date_range("2020-05-31 22:00:00", "2020-08-29 22:00:00", freq="1M")DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00',               '2020-07-31 22:00:00'],              dtype='datetime64[ns]', freq='M')>>> pd.date_range("2020-05-31 22:00:00", "2020-08-29 23:00:00", freq="1M")DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00',               '2020-07-31 22:00:00'],              dtype='datetime64[ns]', freq='M')如果提供 Datetime 对象而不是字符串,也会发生这种情况:>>> s = pd.to_datetime("2020-05-31 22:00:00", format="%Y-%m-%d %H:%M:%S")>>> e = pd.to_datetime("2020-08-29 21:00:00", format="%Y-%m-%d %H:%M:%S")>>> pd.date_range(s, e, freq="1M")DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00'], dtype='datetime64[ns]', freq='M')这是一个错误还是我遗漏了什么?熊猫 v1.1.0
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我发现使用小于开始日期中提到的时间的时间不会列出最后的结果,您也可以使用大于开始日期的时间


>>> pd.date_range("2020-05-31 22:00:00", "2020-08-29 23:00:00", freq="1M")


DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00',

               '2020-07-31 22:00:00'],

              dtype='datetime64[ns]', freq='M')

或者


您可以使用 pandas DateOffset 函数,而不是使用“1M”作为频率值,这将帮助您获得所需的结果。


>>> pd.date_range("2020-05-31 22:00:00", "2020-08-29 21:00:00", freq=pd.DateOffset(months=1))


DatetimeIndex(['2020-05-31 22:00:00', '2020-06-30 22:00:00',

               '2020-07-30 22:00:00'],

              dtype='datetime64[ns]', freq='<DateOffset: months=1>')


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信