2014-12-24 18 views
5

C'è la funzione scipy.signal.argrelextrema che funziona con ndarray, ma quando provo ad usarlo su pandas.Series, restituisce un errore. Qual è il modo giusto per usarlo con i panda?Selezione dei minimi locali e dei massimi da panda. Serie

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' 
+1

Puoi convertire i tuoi dati: http://stackoverflow.com/questions/13187778/pandas-dataframe-to-numpy-array-include-index –

risposta

8

Probabilmente si desidera utilizzarlo in questo modo,

argrelextrema(s.values, np.greater) 

Stai utilizzando i panda serie completa mentre argrelextrema aspetta un array ND. s.values ​​ti fornisce il nd.array

+1

Grazie, questo è esso! –

Problemi correlati