Ind*_*nus 2 datetime python-3.x pandas
是什么让之间,比方说日期的最佳方式,'2019-01-08'并且'2019-01-16',从pandas.DatetimeIndex对象dti的构造下面?理想情况下,一些简洁的语法,如dti['2019-01-08':'2019-01-16']?
import pandas as pd
dti = pd.bdate_range(start='2019-01-01', end='2019-02-15')
DatetimeIndex(['2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04',
'2019-01-07', '2019-01-08', '2019-01-09', '2019-01-10',
'2019-01-11', '2019-01-14', '2019-01-15', '2019-01-16',
'2019-01-17', '2019-01-18', '2019-01-21', '2019-01-22',
'2019-01-23', '2019-01-24', '2019-01-25', '2019-01-28',
'2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01',
'2019-02-04', '2019-02-05', '2019-02-06', '2019-02-07',
'2019-02-08', '2019-02-11', '2019-02-12', '2019-02-13',
'2019-02-14', '2019-02-15'],
dtype='datetime64[ns]', freq='B')
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以用slice_indexer for DateTimeIndex
pandas.DateTimeIndex.slice_indexer(start, stop, step, [...])
它返回日期时间项的索引,以便您可以将其传递给 dti
例子:
dti[dti.slice_indexer("2019-01-07", "2019-01-17")]
Run Code Online (Sandbox Code Playgroud)
如果您阅读方法的源代码DatetimeIndex.__getitem__,a 中的各个日期DatetimeIndex存储在 a 中DatetimeArray。为了支持切片,您需要获取该数组中开始日期和停止日期的整数索引。我建议您向 pandas 开发团队提交功能请求。
同时,您可以在以下位置对其进行猴子修补:
from pandas.core.indexes.datetimes import DatetimeIndex
__old_getitem = DatetimeIndex.__getitem__
def __new_getitem(index, key):
if isinstance(key, slice):
_key = index.slice_indexer(key.start, key.stop, key.step)
else:
_key = key
return __old_getitem(index, _key)
DatetimeIndex.__getitem__ = __new_getitem
# Now you can slice
dti['2019-01-08':'2019-01-16':4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2077 次 |
| 最近记录: |