Python 如何对熊猫的不规则时间间隔进行滚动平均?

Python 如何对熊猫的不规则时间间隔进行滚动平均?,python,pandas,numpy,Python,Pandas,Numpy,我有一个格式为df的数据帧: timeCol dataCol 2 5 9.135 8 11 4 12 6 startTime endTime meanCol 0 3 5.0 1 4 5.0 2 5 5.0 3 6

我有一个格式为
df
的数据帧:

timeCol      dataCol
2              5
9.135          8    
11             4
12             6
startTime    endTime    meanCol
0               3        5.0
1               4        5.0
2               5        5.0
3               6        0.0
4               7        0.0
5               8        0.0
6               9        0.0   
7               10       8.0
8               11       6.0
9               12       6.0
10              13       5.0
11              14       5.0
12              15       6.0     
我想在
dataCol
上以3秒的间隔进行滚动平均,这样它将返回一个格式为
new_df
的数据帧:

timeCol      dataCol
2              5
9.135          8    
11             4
12             6
startTime    endTime    meanCol
0               3        5.0
1               4        5.0
2               5        5.0
3               6        0.0
4               7        0.0
5               8        0.0
6               9        0.0   
7               10       8.0
8               11       6.0
9               12       6.0
10              13       5.0
11              14       5.0
12              15       6.0     

注意,在
new_df
中,例如,对于时间范围(8-11)和(9-12),返回6.0的值(因为
mean(8,4)=6.0
mean(8,4,6)=6.0。所有列都是浮点型。
时间列
将始终有序。实现这一点的有效方法是什么?

我使用的是
numpy
board cast

df=pd.DataFrame({'startTime':np.arange(13),'endTime':np.arange(13)+3})
s=ori.timeCol[:,None]
s1=(df.startTime.values-s<=0)&(df.endTime.values-s>=0)
df['New']=ori.dataCol.dot(s1)/s1.sum(axis=0)
df
    startTime  endTime  New
0           0        3  5.0
1           1        4  5.0
2           2        5  5.0
3           3        6  NaN
4           4        7  NaN
5           5        8  NaN
6           6        9  NaN
7           7       10  8.0
8           8       11  6.0
9           9       12  6.0
10         10       13  5.0
11         11       14  5.0
12         12       15  6.0
df=pd.DataFrame({'startTime':np.arange(13),'endTime':np.arange(13)+3})
s=ori.timeCol[:,无]
s1=(df.startTime.values-s=0)
df['New']=ori.dataCol.dot(s1)/s1.sum(轴=0)
df
开始时间结束时间新
0           0        3  5.0
1           1        4  5.0
2           2        5  5.0
36南
447南
5 5 8南
6 6 9南
7           7       10  8.0
8           8       11  6.0
9           9       12  6.0
10         10       13  5.0
11         11       14  5.0
12         12       15  6.0

这里有一种方法:

将熊猫作为pd导入
#源数据
数据={
"timeCol":[2,9.135,11,12],,
“数据列”:[5,8,4,6]
}
df=pd.DataFrame(data=data)
#基于时间序列生成行列表
行=[]
对于范围内的开始时间(12):
结束时间=开始时间+3
打印(开始时间、结束时间、结束时间)
#仅从源数据中获取与当前时间间隔匹配的行
过滤=df.loc[(df['timeCol']>=startTime)&

(df['timeCol']您的timeseries数据帧是否总是基于
timeCol
?问题似乎根本不包括解决问题的任何尝试。StackOverflow希望您这样做,因为您的尝试有助于我们更好地了解您想要的内容。请编辑问题以显示您所尝试的内容,并向我们展示您遇到的特定障碍“我们遇到了。有关更多信息,请参阅。谢谢@WeNYoBen。你能告诉我在这种情况下ori是什么吗?”Melsouse aha,ori在我的中是你的df