Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地按日内时间过滤时间序列的时间索引?_Python_Pandas_Datetime_Time_Time Series - Fatal编程技术网

Python 如何有效地按日内时间过滤时间序列的时间索引?

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

我有一个(TimeSeries数据)数据帧,它看起来像这样:

                              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')