熊猫数据框,以找到局部最大值和最小值之和

时间:2020-03-11 18:50:06

标签: pandas dataframe

我的数据框的值增加了,但是当服务器重新启动时,该系列被重置了。

例如

value = {10,25,100,2,12,35,5,16}

我需要找到局部最大值和最小值之和

以上设置的答案是(100-10)+(35-2)+(16-5)= 90 + 33 + 11 = 134

如何在pandas数据框中完成此操作?感谢帮助

2 个答案:

答案 0 :(得分:0)

两步过程。

首先获取每个增量的第一位和最后一位:

df2 = df.groupby((df['col1'].shift()>df['col1']).cumsum()).nth([0,-1])

然后得到每个组的差然后求和:

df2.groupby(level = 0).diff().sum()
0    134.0

答案 1 :(得分:0)

您可以使用scipy.signal.argrelextrema

from scipy.signal import argrelextrema
import numpy as np

value =np.array( [10, 25, 100, 2, 12, 35, 5, 16] )

max_=value[argrelextrema(value, np.greater)]
min_=value[argrelextrema(value, np.less)]

res=sum(max_)-sum(min_)

#just to include first el:
if(value[0]>value[1]): res+=value[0]
elif(value[0]<value[1]): res-=value[0]
#and the last one:
if(value[-1]>value[-2]): res+=value[-1]
elif(value[-1]<value[-2]): res-=value[-1]

print(res) #134