#
# Number of iterated periods will depend on 5min or 15min runs
#
df_123.set_index('Datetime',inplace=True)
measure_interval = "15mins"
if measure_interval == "5mins":
num_measure_periods = 96
measure_period = "5T"
elif measure_interval == "15mins":
num_measure_periods = 32
measure_period = "15T"
myList = []
dateList = []
# Gets list of dates in dataset and appends '23:00' for measure start
# Creates datetime like object
for idx, day in df_123.groupby(df_123.index.date):
dateList.append(str(idx) + ' 23:00')
# For each date in list, try to filter data between 23:00 (Day 1) - 07:00 (Day 2)
for iDate in dateList:
try:
filt = pd.date_range(start = iDate, periods=num_measure_periods,freq=measure_period)
var = df_123.loc[filt]
myList.append(var)
# If data cant be filtered by 23:00 - 07:00 (e.g. data finishes at 01:00)
# Loop until fails then append data to myList
# If var is a dataframe then append to myList
except:
var = ""
for x in range (1, num_measure_periods):
filt = pd.date_range(start = iDate, periods=x,freq=measure_period)
try:
var = df_123.loc[filt]
except KeyError as e:
if not isinstance(var, pd.DataFrame):
break
else:
myList.append(var)
break
print(myList)
我提出了以下解决方案,似乎效果不错。我想有更简单的方法
忽略顶部的测量间隔部分。这是为了将来与其他软件的集成。为了让代码的其余部分更清晰,我把它留在了这里
Resulting dataframes
相关问题 更多 >
编程相关推荐