Python支持数据分组

2024-09-28 21:36:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用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


Tags: 数据方法dataframepandasdfdataprint动态数据
1条回答
网友
1楼 · 发布于 2024-09-28 21:36:01

我提出了以下解决方案,似乎效果不错。我想有更简单的方法

忽略顶部的测量间隔部分。这是为了将来与其他软件的集成。为了让代码的其余部分更清晰,我把它留在了这里

#
# 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

相关问题 更多 >