我正在尝试为3维加速度计数据应用RMS函数。另外,我在开始时有一个时间戳列,以天数计。因此数据帧如下:
0 1 2 3
0 1.963 -12.0 -71.0 -2.0
1 1.963 -11.0 -71.0 -3.0
2 1.963 -14.0 -67.0 -6.0
3 1.963 -16.0 -63.0 -7.0
4 1.963 -18.0 -60.0 -8.0
列“0”是天,其他所有列是加速度计的3轴数据。现在,我正在使用这种方法来将RMS值计算到新列中,并删除现有的3轴数据:
def rms_detrend(x):
return np.sqrt(np.mean(x[1]**2 + x[2]**2 + x[3]**2))
accdf =pd.read_csv(ACC_files[1],header=None)
accdf['ACC_RMS'] = accdf.apply(rms_detrend,axis=1)
accdf = accdf.drop([1,2,3],axis=1)
accdf.columns = accdf['Days','ACC_RMS']
但是,我有70个这样的加速度计数据文件,每个文件约有4000多个行。那么有没有更好,更快的(pythonic)方法呢?谢谢。
上面的代码仅针对一个文件完成,而且速度很慢。
最佳答案
用:
accdf['ACC_RMS'] = np.sqrt(accdf.pop(1)**2 + accdf.pop(2)**2 + accdf.pop(3)**2)
print (accdf)
0 ACC_RMS
0 1.963 72.034714
1 1.963 71.909666
2 1.963 68.709534
3 1.963 65.375837
4 1.963 63.150614
关于python-3.x - 在三列 Pandas 上应用RMS公式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51025497/