pandas.rolling()函数提供滚动窗口计算的功能 (版本0.18.0中的新功能)
DataFrame.rolling(window,min_periods = None,freq = None,center = False,win_type = None,on = None,axis = 0,closed = None)
部分参数说明:
window:移动窗口的大小,用于计算统计量的观测数.如果是偏移量类型,那么这将是每个窗口的时间段。
min_periods:窗口中的最小观察数,默认是窗口大小,如果窗口非空值数量小于此数,则取NAN
center:将标签设置在窗口的中心(即将结果放在窗口的中心位置,默认是最右侧位置)
axis: int或string,0(列)为默认,1(行)
示例:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A': [0, 1, 2, np.nan, 4],'B': [0, np.nan,1, 2, 4],'C': [3, 7, 2, np.nan, 4],'D': [0,6, 2, 4, np.nan]})
print(df1)
A B C D
0 0.0 0.0 3.0 0.0
1 1.0 NaN 7.0 6.0
2 2.0 1.0 2.0 2.0
3 NaN 2.0 NaN 4.0
4 4.0 4.0 4.0 NaN
df2=df1.rolling(3, center=True,min_periods=1).sum()
print(df2)
A B C D
0 1.0 0.0 10.0 6.0
1 3.0 1.0 12.0 8.0
2 3.0 3.0 9.0 12.0
3 6.0 7.0 6.0 6.0
4 4.0 6.0 4.0 4.0
df1.update(df2,overwrite=False)#overwrite默认是TRUE,全部替换。False只替换原始数据中的NAN
print(df1)
A B C D
0 0.0 0.0 3.0 0.0
1 1.0 1.0 7.0 6.0
2 2.0 1.0 2.0 2.0
3 6.0 2.0 6.0 4.0
4 4.0 4.0 4.0 4.0