Python 基于另一个(不规则)时间序列panda的下采样时间序列

Python 基于另一个(不规则)时间序列panda的下采样时间序列,python,pandas,Python,Pandas,我用下面的例子来说明我的问题。 我有两个熊猫数据帧 第一个具有10秒的时间步长,这是连续的。两天的示例数据: import pandas as pd import random t_10s = pd.date_range(start='1/1/2018', end='1/3/2018', freq='10s') t_10s = pd.DataFrame(columns = ['b'], data = [random.randint(0,10) for _

我用下面的例子来说明我的问题。 我有两个熊猫数据帧

第一个具有10秒的时间步长,这是连续的。两天的示例数据:

import pandas as pd
import random
t_10s = pd.date_range(start='1/1/2018', end='1/3/2018', freq='10s')
t_10s = pd.DataFrame(columns = ['b'],
                     data = [random.randint(0,10) for _ in range(len(t_10s))],
                     index = t_10s)
下一个数据帧有五分钟的时间步长,但白天只有数据,每天早上的不同时间开始记录。两天的示例数据,从早上的两个不同时间开始,与真实数据相似:

t_5m1 = pd.date_range(start='1/1/2018 08:08:30', end='1/1/2018 18:03:30', freq='5min')
t_5m2 = pd.date_range(start='1/2/2018 08:10:25', end='1/2/2018 18:00:25', freq='5min')
t_5m = t_5m1.append(t_5m2)

t_5m = pd.DataFrame(columns = ['a'],
                    data = [0 for _ in range(len(t_5m))],
                    index = t_5m)
现在我要做的是,对于每个数据点,x,以t_5m为单位,找到t_10s数据的等效平均值,在x周围的五分钟窗口中

现在,我找到了一种方法,通过列表理解如下:

tstep = pd.to_timedelta(2.5, 'm')
t_5m['avg'] = [t_10s.loc[((t_10s.index >= t_5m.index[i] - tstep) &
                          (t_10s.index < t_5m.index[i] + tstep))].b.mean() for i in range(0,len(t_5m))]
tstep=pd.to_timedelta(2.5,'m')
t_5m['avg']=[t_10s.loc[(t_10s.index>=t_5m.index[i]-t步骤)&
(t_10s.指数
但是,我希望对至少跨越两年的时间序列和许多列(不只是这里的b。当前的解决方案是在相关列上进行for循环)执行此操作。然后代码变得非常慢。有人能想出一个更有效的方法吗?我考虑过使用重采样或groupby。如果我有一个固定的5分钟间隔,那就行了,但由于两天之间的间隔是不固定的,我不能让它工作。感谢您的任何意见

我已经四处寻找了一些,例如,但找不到我需要的东西