首页 > 解决方案 > 从另一列中减去一列中的振荡数据

问题描述

嗨,我有一些时间序列数据,查看不同位置和速度下的力产生。数据如下:

数据框示例.

我有四列时间、扭矩、位置和速度。数据循环通过六次重复,其中位置从 100 度变为 12 度并返回,速度从 0 变为该试验并返回的最大速度(根据速度和扭矩创建三个正试验和三个负试验) 显示位置和顶部图中的速度和底部的扭矩在每毫秒产生扭矩。 阴谋

我以 5 度/秒的慢速和 90 度/秒的快速采集数据。所有六次低速代表的数据点数为 125000,高速代表为 25000。我想从 90 度/秒的每个阳性试验中减去 5 度/秒的三个阳性试验的平均值,同样的事情阴性试验。由于数据帧的长度不同,我目前首先使用以下代码将两个数据帧的索引更改为位置

 df.set_index('Position')

更改索引后,我正在删除连续的重复项

df.loc[df.Position.shift(1) != df.Position]

删除重复项后,我将数据切割成六个单独的重复,并使用 cumsum 方法创建六个新数据帧(三个用于正,三个用于负),当速度符号从正变为负时创建一个阈值,如下面的代码所示代码:

削减阳性试验的示例

Threshold=df['Velocity'].lt(start_Velcoity).cumsum()

Trial = [d.dropna() for _, d in df.mask(df['Velcoity'].df(start_Velcoity)).groupby(Threshold) if d.shape[0] >= 1000]

一旦我有两个速度的六个数据帧。我在三个正轨迹中取扭矩列的平均值来表示速度较慢,而对于负试验,我取平均值,以创建两个新的数据帧(平均正数据帧和平均负数据帧)。我使用“位置”上的左合并,根据它们的符号将这些新的平均数据帧组合到每个快速数据帧

Fast_Trial_Positive.merge(Mean_slow_trial_positive, on="Position", how="left",sort=False)

在合并的数据帧中,我进行插值以估算与快速速度相对应的低速位置的任何扭矩缺失数据,然后从快速扭矩中减去插值的扭矩列以获得结果。

我只是想知道是否有一种更简单的方法可以做到这一点,我可以在不创建所有这些新数据帧的情况下从快速中减去慢速。

任何帮助将不胜感激。

标签: pythonpandasdataframe

解决方案


推荐阅读