2017-04-11 15 views
1

私は以下のようなデータフレームを持っています。私は定義した関数(hurst())を各列に適用し(時系列を引数として)、結果を別のデータフレームに出力したいと思います。データフレーム列に関数を適用する

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 

はどのようにして、完全なデータフレームが1Y Dtの歴史を持ち、E、Fなど

+0

'df.sum()'には何の問題がありますか?この簡略化された例には既に回答がありますので、正確に問題を定義することに役立ちます – EdChum

+0

はい。 'apply' df.apply(yourFunction)を列方向または行方向のどちらかにします(推奨しません)。 –

+0

私の関数は以下の通りですが、df.apply(hurst、axis = 1)を使用すると、配列エラーの一部を変更できません。 DEFハースト(TS): #は遅れの範囲は ラグ値=範囲(2,50) 位遅れの分散のアレイを計算作成TS 時系列ベクトルのハースト指数#returns #ハルスト指数を推定するために線形近似を使用する poly = polyfit(log(lag:tg [lag: return poly [0] * 2.0 –

答えて

0
を続け

enter image description here

にこの

enter image description here

から入手できますか

試してみよう:

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) 
関連する問題