如何使用 Pandas 获取指定时间段内动态数据集的隔夜数据?
我希望在 23:00(第 1 天)到 07:00(第 2 天)之间提取数据。
我正在使用以下方法连接所有夜间数据,但不确定如何将其拆分为所述时间段。
night = df_data[(df_data['Hour'] >= 23) | (df_data['Hour'] >= 0) & (df_data['Hour'] < 7)]
print(night)
答案 0 :(得分:0)
我想出了以下似乎工作正常的解决方案。我想有更简单的方法。
忽略顶部的 measure_interval 部分。那是为了将来与其他软件的集成。为了清楚起见,我在其余代码中保留了它。
#
# 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)