Python pandas rolling_apply zwei-Spalte-input in die Funktion

Anschluss an diese Frage Python benutzerdefinierte Funktion mit rolling_apply für pandas, über die Verwendung rolling_apply. Ich habe zwar voran, mit meiner Funktion, die ich bin kämpfen, um mit einer Funktion, die erfordert, dass zwei oder mehr Spalten als Eingänge:

Erstellen das gleiche setup wie vor

import pandas as pd
import numpy as np
import random

tmp  = pd.DataFrame(np.random.randn(2000,2)/10000, 
                    index=pd.date_range('2001-01-01',periods=2000),
                    columns=['A','B'])

Aber die änderung der Funktion leicht zu nehmen, zwei Spalten.

def gm(df,p):
    df = pd.DataFrame(df)
    v =((((df['A']+df['B'])+1).cumprod())-1)*p
    return v.iloc[-1]

Produziert es die folgende Fehlermeldung:

pd.rolling_apply(tmp,50,lambda x: gm(x,5))

  KeyError: u'no item named A'

Ich denke, es ist, weil der Eingang für die lambda-Funktion ist ein ndarray der Länge 50 und nur von der ersten Spalte, die nicht zwei Spalten als Eingabe. Gibt es eine Möglichkeit, um sowohl die Spalten als Eingänge und verwenden Sie es in einem rolling_apply Funktion.

Wieder jegliche Hilfe würde sehr geschätzt werden...

Möglich, Duplikat der stackoverflow.com/questions/37486502/.... Siehe meine Antwort dort.

InformationsquelleAutor h.l.m | 2014-01-10

Schreibe einen Kommentar