使用 pandas 的 datetimeindex 在特定日期按分钟和小时提取时间间隔
Posted
技术标签:
【中文标题】使用 pandas 的 datetimeindex 在特定日期按分钟和小时提取时间间隔【英文标题】:Extracting time interval by minute and hour in a particular day using datetimeindex of pandas 【发布时间】:2022-01-10 18:34:02 【问题描述】:假设我们有一个包含时间索引的数据帧,我们只想提取一个包含 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
。
【问题讨论】:
【参考方案1】:更新
为什么从 10 开始?它应该从10:23(含)开始,到16:34(含)结束
也许你正在寻找between_time
:
>>> ts.between_time('10:23', '16:34')
A
2018-04-09 10:23:00 623
2018-04-09 10:24:00 624
2018-04-09 10:25:00 625
2018-04-09 10:26:00 626
2018-04-09 10:27:00 627
... ...
2018-04-09 16:30:00 990
2018-04-09 16:31:00 991
2018-04-09 16:32:00 992
2018-04-09 16:33:00 993
2018-04-09 16:34:00 994
[372 rows x 1 columns]
缺少( )
。注意操作员优先级:&
优先于 ==
。
# HERE ----v---v
mask1 = (10 == ts.index.hour) & (23 <= ts.index.minute)
mask2 = (10 <= ts.index.hour)
mask3 = (14 == ts.index.hour) & (34 >= ts.index.minute)
# HERE ----^---^
mask = mask1 | mask2 | mask3
ts_desire = ts[mask]
输出:
>>> 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]
【讨论】:
为什么从10开始?它应该从10:23(含)开始,到16:34(含)结束。另外,day[mask]
是什么?以上是关于使用 pandas 的 datetimeindex 在特定日期按分钟和小时提取时间间隔的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
pandas使用pd.DatetimeIndex函数将混合格式的日期数据(包含字符串datetime对象pd.Timestamp)数据转化为时间索引数据DatetimeIndex
基于时间间隔使用 DatetimeIndex 对 Pandas 数据帧进行切片