2017-04-11 5 views
1

Ich habe einen Datenrahmen wie folgt. Ich möchte eine Funktion, die ich definiert habe (hurst()) auf jede Spalte anwenden (es dauert eine Zeitreihe als ein Argument) und dann die Ergebnisse zu einem anderen Datenrahmen ausgeben.Anwenden von Funktion auf Datenrahmen Spalten

def hurst(ts): 
    #returns the Hurst Exponent of the time series vector ts 

    # Create the range of lag values 
    lags = range (1,5) 

    # Calculate the array of the variances of the lagged differences 
    tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags] 

    # Use a linear fit to estimate the Hurst Exponent 
    poly = polyfit(log(lags), log(tau), 1) 

    # Return the Hurst exponent from the polyfit output 

    return poly[0]*2.0 

Wie komme ich von diesem

enter image description here

zu

enter image description here

Der vollständige Datenrahmen eine 1J Dt Geschichte hat und weiterhin E, F usw.

+0

Was ist falsch mit 'df.sum()'? es würde helfen, Ihr Problem genau zu definieren, da dieses vereinfachte Beispiel bereits eine Antwort hat – EdChum

+0

Ja. Betrachten Sie 'apply' df.apply (yourFunction) entweder spaltenweise oder zeilenweise (nicht empfohlen). –

+0

meine Funktion ist unten, aber mit df.apply (hurst, Achse = 1) bekomme ich eine Sie können nicht Teil eines Array-Fehler ändern. def Hurst (ts): #returns den Hurst-Exponent des Zeitserienvektors ts # Erstellen der Bereich der Verzögerungs lags WERTE = Bereich (2,50) # Berechnen der Anordnung der Varianzen der verzögerten Differenzen tau = [sqrt (std (subtrahieren (ts [lag:], ts [: - lag]))) für lag in lags] # Verwenden Sie eine lineare Anpassung, um die Hurst Exponent Poly = polyfit (log (lags), log (tau), 1) # Geben Sie den Hurst-Exponenten aus dem Polyfit-Ausgang zurück return poly [0] * 2.0 –

Antwort

0

Lass es uns versuchen:

def hurst(ts): 
    #returns the Hurst Exponent of the time series vector ts 

    # Create the range of lag values 
    lags = range (1,5) 

    # Calculate the array of the variances of the lagged differences 
    tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags] 

    # Use a linear fit to estimate the Hurst Exponent 
    poly = polyfit(log(lags), log(tau), 1) 

    # Return the Hurst exponent from the polyfit output 

    return poly[0]*2.0 

df[list('ABCD')].apply(hurst) 
Verwandte Themen