删除值如果与前一个和后一个- Pandas差异太大



当数据帧与前一个或后一个差异太大时,我想从数据帧中删除值。

df = pd.DataFrame({'Watt':[554, 557, 51, 480, 601, 458, 19, 492, 503, 22, 399]})

例如这里我需要去掉(51,19,22),有点"outliers">

我不想在< x这样的条件下下降,而是考虑到前一个和下一个值的百分比变化。

感谢

下面的命令将产生期望的输出:

df = pd.DataFrame({'Watt':[554, 557, 51, 480, 601, 458, 19, 492, 503, 22, 399]})
df['previous percent'] = df.Watt/df.Watt.shift(1)
df['next percent'] = df.Watt.shift(-1)/df.Watt
threshold_previous = .8
threshold_next = 2
df[(1-df['previous percent'] < threshold_previous) & 
(df['next percent']-1 < threshold_next)]

一个稍微优雅一点的解决方案是:

df['average'] = (df.Watt.shift(1) + df.Watt.shift(-1)) / 2
threshold = .8
df[df.Watt/df.average > threshold]

但这取决于你的用例。

相关内容

  • 没有找到相关文章

最新更新