【发布时间】:2021-02-25 17:45:41
【问题描述】:
我查看了 pandas 的“类似 sql”的 windows 功能,以及“滚动”。 但是,在我看来,我不能对索引中的时间戳设置条件,但也许我错了。 到目前为止,我一直在编写这个非常低效的代码,以将每小时平均值作为窗口函数。 有人知道更快更好的方法吗?
def avg_on_hour(data: pd.Series()):
new_series = pd.Series()
start_date = data.index.min()
end_date = data.index.max()
delta = dt.timedelta(hours=1)
this_time = start_date
while this_time < end_date:
this_date = this_time.date()
this_hour = this_time.hour
day_slice = data[(data.index.date == this_date) & (data.index.hour == this_hour)]
day_avg = day_slice.mean()
day_slice.iloc[:] = day_avg
new_series = new_series.append(day_slice, verify_integrity=True)
this_time = this_time + delta
return new_series
【问题讨论】:
-
Pandas 在日期时间上滚动,因为该系列是日期时间索引的:
series.rolling('1H').mean()。
标签: pandas time-series pandas-groupby