Python Pandas 隔夜数据分组

时间:2021-02-18 12:16:17

标签: python pandas

如何使用 Pandas 获取指定时间段内动态数据集的隔夜数据?

我希望在 23:00(第 1 天)到 07:00(第 2 天)之间提取数据。

我正在使用以下方法连接所有夜间数据,但不确定如何将其拆分为所述时间段。

night = df_data[(df_data['Hour'] >= 23) | (df_data['Hour'] >= 0) & (df_data['Hour'] < 7)]
print(night)

Resulting dataframe

1 个答案:

答案 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)

Resulting dataframes

相关问题