计算滚动均方根

niv*_*wda 1 python pandas

我有一个振动信号,我想使用均方根和 21 天的滚动窗口来平滑信号。数据以分钟为单位,因此 21 天的滚动窗口意味着 21*1440[21*24*60]。有没有类似的方法:

    # Dummy approach
    df['Rolling_rms'] = df['signal'].rolling(21*1440).rms()
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 for 循环的方法,这太耗时了:

 # Function for calculating RMS
 def rms_calc(ser):
     return np.sqrt(np.mean(ser**2))

 for i in range(0,len(signal)):
 j = 21*1440+i
 print(rms_calc(df[signal][i:j]))
Run Code Online (Sandbox Code Playgroud)

Myk*_*tko 5

您可以将该方法apply与自定义函数一起使用:

df['signal'].pow(2).rolling(21*24*60).apply(lambda x: np.sqrt(x.mean()))
Run Code Online (Sandbox Code Playgroud)