2015-03-13 15 views
7

Gibt es ein Äquivalent von rolling_apply in Pandas, das die Funktion auf die kumulativen Werte einer Reihe und nicht auf die rollenden Werte anwendet? Ich realisiere cumsum, cumprod, cummax und cummin existieren, aber ich möchte eine benutzerdefinierte Funktion anwenden.Funktion auf kumulative Werte der Pandas-Serie anwenden

Antwort

16

Sie können pd.expanding_apply verwenden. Unten ist ein einfaches Beispiel, das nur eine kumulative Summe erstellt, aber Sie könnten die gewünschte Funktion dafür schreiben.

import pandas as pd 

df = pd.DataFrame({'data':[10*i for i in range(0,10)]}) 

def sum_(x): 
    return sum(x) 


df['example'] = pd.expanding_apply(df['data'], sum_) 

print(df) 

# data example 
#0  0  0 
#1 10  10 
#2 20  30 
#3 30  60 
#4 40  100 
#5 50  150 
#6 60  210 
#7 70  280 
#8 80  360 
#9 90  450 
+1

In neuen Pandas> = 0.18.0 wird es durch DataFrame.expanding() ersetzt. Apply() – luca

Verwandte Themen