Python,Pandas,Numpy:Date_range:将np.timedelta作为freq传递.争论

我有一个格式为numpy.timedelta(64)的时间增量:

value = numpy.timedelta64(30,’m’)

 (这里30分钟).

有没有办法将该值传递给pandas date_range的构造:
pd.date_range(start_time,end_time,freq = value)?

如果不是如何转换该值以便在date_range中传递它?我尝试了value.astype(‘str’),但它返回’0:30:00′,它也不适合作为pd.date_range的参数.

最佳答案 您可以将其转换为Timedelta并将其传递给freq.

>>> pd.date_range('20160101', '20170101', freq=pd.Timedelta(value)) 
DatetimeIndex(['2016-01-01 00:00:00', '2016-01-01 00:30:00',
               '2016-01-01 01:00:00', '2016-01-01 01:30:00',
               '2016-01-01 02:00:00', '2016-01-01 02:30:00',
               '2016-01-01 03:00:00', '2016-01-01 03:30:00',
               '2016-01-01 04:00:00', '2016-01-01 04:30:00',
               ...
               '2016-12-31 19:30:00', '2016-12-31 20:00:00',
               '2016-12-31 20:30:00', '2016-12-31 21:00:00',
               '2016-12-31 21:30:00', '2016-12-31 22:00:00',
               '2016-12-31 22:30:00', '2016-12-31 23:00:00',
               '2016-12-31 23:30:00', '2017-01-01 00:00:00'],
              dtype='datetime64[ns]', length=17569, freq='30T')

我认为旧版本的pandas不支持此功能,但仍可使用频率字符串:

 pd.date_range('20160101', '20170101', freq='30min')
点赞