首页 > 解决方案 > 如何以 X 分钟/小时/秒的频率使用 pd.data_range()?

问题描述

我需要用 pandas 创建一个频繁的日期范围date_range()。这适用于frequency=...参数。但有时我的代码需要这些频率范围更长的频率。例如4小时或5分钟而不是一。

我该怎么做pd.date_range(first_X_datetime, last_X_datetime, freq=frequency)

如果没有更有效的方法,我的想法是创建一个 pd.date_range 然后删除未包含的索引。但是怎么做呢?(目前我想不出更好的方法)

标签: pythonpandasnumpydatedatetime

解决方案


您始终可以根据需要自定义频率,而不仅仅是1 hour1 minute

In [237]: pd.date_range(start, end, freq='2h20min')
Out[237]: 
DatetimeIndex(['2011-01-01 00:00:00', '2011-01-01 02:20:00',
               '2011-01-01 04:40:00', '2011-01-01 07:00:00',
               '2011-01-01 09:20:00', '2011-01-01 11:40:00',
               '2011-01-01 14:00:00', '2011-01-01 16:20:00',
               '2011-01-01 18:40:00', '2011-01-01 21:00:00'],
              dtype='datetime64[ns]', freq='140T')

In [238]: pd.date_range(start, end, freq='1D10U')
Out[238]: 
DatetimeIndex([       '2011-01-01 00:00:00', '2011-01-02 00:00:00.000010',
               '2011-01-03 00:00:00.000020', '2011-01-04 00:00:00.000030',
               '2011-01-05 00:00:00.000040', '2011-01-06 00:00:00.000050',
               '2011-01-07 00:00:00.000060', '2011-01-08 00:00:00.000070',
               '2011-01-09 00:00:00.000080', '2011-01-10 00:00:00.000090'],
              dtype='datetime64[ns]', freq='86400000010U')

请在此处查看更多信息:

https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html


推荐阅读