Python 如何有效地按日内时间过滤时间序列的时间索引?
我有一个(TimeSeries数据)数据帧,它看起来像这样:Python 如何有效地按日内时间过滤时间序列的时间索引?,python,pandas,datetime,time,time-series,Python,Pandas,Datetime,Time,Time Series,我有一个(TimeSeries数据)数据帧,它看起来像这样: A1 A2 ... Z1 Z2 2019-06-17 00:00:01 NaN NaN ... NaN NaN 2019-06-17 00:01:59 NaN NaN ... NaN
A1 A2 ... Z1 Z2
2019-06-17 00:00:01 NaN NaN ... NaN NaN
2019-06-17 00:01:59 NaN NaN ... NaN NaN
2019-06-17 00:02:29 NaN NaN ... NaN NaN
... ... ... ... ...
2020-06-17 23:55:01 NaN NaN ... NaN NaN
2020-06-17 23:58:45 NaN NaN ... NaN NaN
2020-06-17 23:59:59 NaN NaN ... NaN NaN
问题:
人们需要在白天(00:00:00)进行选择,需要保持灵活性,因为秒数也可以高达59秒
如何在给定的两个时间值(例如15:00:00、24:00:00)之间提取索引
但是:
仅在特定的天数范围内(如周一至周四)
(这就是我如何提取范围VAL:)
timeRangeString=“周一、周四,15:00,24:00”#开始时间==15:00:00
#==>结束时间==23:59:59
#==>start\u dayint==0
#==>end_dayint==3
如何将范围上的索引提取到“范围索引”?IIUC,以及性能
df.loc[df.index.weekday<4]。时间间隔('15:00','00:00'))
我试过:df.loc[df.index.weekday>=start_dayint&df.index.weekday试过:df.loc[(df.index.weekday>=start_dayint)&(df.index.weekday)
timeRangesString = "Mon,Thur,15:00,24:00" #<== the input
rangeIndices = pd.Index()
# time ranges:
start_time = time.strptime( timeRangesString.split(",")[0], "%H:%M:%S")#.dt.strftime("%H:%M", '%H:%M:%S')
if timeRangesString.split(",")[1]=="24:00":
end_time = pd.to_datetime("23:59:59", format="%H:%M:%S")
else:
end_time = time.strptime( timeRangesString.split(",")[1], "%H:%M")#.dt.strftime("%H:%M",' %H:%M:%S')
# day ranges:
start_dayint = time.strptime( timeRangesString.split(",")[2], "%a").tm_wday
end_dayint = time.strptime( timeRangesString.split(",")[3], "%a").tm_wday
# ==> start_time == 15:00:00
# ==> end_time == 23:59:59
# ==> start_dayint == 0
# ==> end_dayint == 3
df.loc[df.index.weekday < 4].between_time('15:00', '00:00')