从pandas.Series中选择本地最小值和最大值

Sta*_*gin 11 python pandas

有一个可以使用的scipy.signal.argrelextrema功能ndarray,但是当我尝试使用它时pandas.Series,它会返回一个错误.与熊猫一起使用它的正确方法是什么?

import numpy as np
import pandas as pd
from scipy.signal import argrelextrema
s = pd.Series(randn(10), range(10))
s
argrelextrema(s, np.greater)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-f3812e58bbe4> in <module>()
      4 s = pd.Series(randn(10), range(10))
      5 s
----> 6 argrelextrema(s, np.greater)

/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in argrelextrema(data, comparator, axis, order, mode)
    222     """
    223     results = _boolrelextrema(data, comparator,
--> 224                               axis, order, mode)
    225     return np.where(results)
    226 

/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in _boolrelextrema(data, comparator, axis, order, mode)
     60 
     61     results = np.ones(data.shape, dtype=bool)
---> 62     main = data.take(locs, axis=axis, mode=mode)
     63     for shift in xrange(1, order + 1):
     64         plus = data.take(locs + shift, axis=axis, mode=mode)

TypeError: take() got an unexpected keyword argument 'mode'
Run Code Online (Sandbox Code Playgroud)

nit*_*tin 15

您可能想要像这样使用它,

argrelextrema(s.values, np.greater)
Run Code Online (Sandbox Code Playgroud)

您目前正在使用完整的pandas系列,而argrelextrema需要一个nd数组.s.values为您提供nd.array