繁体   English   中英

使用 pandas 的 datetimeindex 在特定日期按分钟和小时提取时间间隔

[英]Extracting time interval by minute and hour in a particular day using datetimeindex of pandas

假设我们有一个 dataframe 包括时间索引,我们只想提取一个 dataframe 包括 10:23 到 14:34。 我们应该怎么做?

n =1000
i = pd.date_range('2018-04-09', periods=n, freq='1min')
ts = pd.DataFrame({'A': [i for i in range(n)]}, index=i)
print(ts)

                       A
2018-04-09 00:00:00    0
2018-04-09 00:01:00    1
2018-04-09 00:02:00    2
2018-04-09 00:03:00    3
2018-04-09 00:04:00    4
...                  ...
2018-04-09 16:35:00  995
2018-04-09 16:36:00  996
2018-04-09 16:37:00  997
2018-04-09 16:38:00  998
2018-04-09 16:39:00  999

我的尝试:

我认为对于这样的每个问题,我们需要将其分解为 3 个条件。 如果我错了,请纠正我。

mask1 = ( 10 == ts.index.hour & 23 <= ts.index.minute)
mask2 = ( 10 <= ts.index.hour )
mask3 = ( 14 == ts.index.hour & 34 >= ts.index.minute)

mask = mask1 | mask2 | mask3
ts_desire = ts[mask]

然后我得到TypeError: Input must be Index or array-like

缺少( ) 注意运算符优先级: &优先于==

#                   HERE ----v---v
mask1 = (10 == day.index.hour) & (23 <= day.index.minute)
mask2 = (10 <= day.index.hour)
mask3 = (14 == day.index.hour) & (34 >= day.index.minute)
#                   HERE ----^---^

mask = mask1 | mask2 | mask3
ts_desire = day[mask]

Output:

>>> ts_desire
                       A
2018-04-09 10:00:00  600
2018-04-09 10:01:00  601
2018-04-09 10:02:00  602
2018-04-09 10:03:00  603
2018-04-09 10:04:00  604
...                  ...
2018-04-09 16:35:00  995
2018-04-09 16:36:00  996
2018-04-09 16:37:00  997
2018-04-09 16:38:00  998
2018-04-09 16:39:00  999

[400 rows x 1 columns]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM