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