And*_*den 19
您可以between_time直接使用该功能:
ts.between_time(datetime.time(18), datetime.time(9), include_start=False, include_end=False)
Run Code Online (Sandbox Code Playgroud)
原始答案:
您可以使用该indexer_between_time Index方法.
例如,包括上午9点到下午6点(含)之间的时间:
ts.ix[ts.index.indexer_between_time(datetime.time(9), datetime.time(18))]
Run Code Online (Sandbox Code Playgroud)
做相反的事,并在下午6点到9点之间排除那些时间(独家):
ts.ix[ts.index.indexer_between_time(datetime.time(18), datetime.time(9),
include_start=False, include_end=False)]
Run Code Online (Sandbox Code Playgroud)
注:indexer_between_time的论点include_start,并include_end在默认情况下True,设置include_start于False该日期时间,其时间部分恰恰是手段start_time(第一个参数),在这种情况下,下午6点,将不被包括在内.
例:
In [1]: rng = pd.date_range('1/1/2000', periods=24, freq='H')
In [2]: ts = pd.Series(pd.np.random.randn(len(rng)), index=rng)
In [3]: ts.ix[ts.index.indexer_between_time(datetime.time(10), datetime.time(14))]
Out[3]:
2000-01-01 10:00:00 1.312561
2000-01-01 11:00:00 -1.308502
2000-01-01 12:00:00 -0.515339
2000-01-01 13:00:00 1.536540
2000-01-01 14:00:00 0.108617
Run Code Online (Sandbox Code Playgroud)
注意:相同的语法(使用ix)适用于DataFrame:
In [4]: df = pd.DataFrame(ts)
In [5]: df.ix[df.index.indexer_between_time(datetime.time(10), datetime.time(14))]
Out[5]:
0
2000-01-03 10:00:00 1.312561
2000-01-03 11:00:00 -1.308502
2000-01-03 12:00:00 -0.515339
2000-01-03 13:00:00 1.536540
2000-01-03 14:00:00 0.108617
Run Code Online (Sandbox Code Playgroud)