2017-03-09 5 views
2

Angenommen, dies ist meine Multi-Level-Datenframe ist:Mit Pandas gelten Funktion auf Multi-Level-Datenrahmen

States = pd.DataFrame({'Alaska' : [1, 2, 3, 4], 'Arizona': [5, 6, 7, 8]}, 
         index=pd.MultiIndex(levels=[['A', 'B'], ['x','y']], 
         labels=[[1,1,0,0],[1,0,1,0]])).T 

Ich versuche, neue Variablen aus diesem Datenrahmen abzuleiten.

def scoring_algorithm(x): 
    return x[('A', 'x')] + 100 
States.apply(scoring_algorithm) 

Aber das wirft einen Fehler

KeyError: (('A', 'x'), 'occurred at index (B, y)')

ich von dem Fehler annehmen, dass meine Spaltenauswähler ('A', 'x') nicht zufriedenstellend ist, aber ich kann keine Ressourcen für die finden, wie dies für eine verwenden, Funktion anwenden.

Hinweis: Ich brauche die Anwendungsfunktion oder etwas Ähnliches, da der abschließende Bewertungsalgorithmus mehrere Spalten als Eingaben für die Anwendungsfunktion benötigt.

Vielen Dank im Voraus für jede Anleitung!

+1

Vielen Dank für die gute, reproduzierbare Beispiel! –

Antwort

1

Sie bewerben sich gerade um den Index.

df.apply(fxn) 

entspricht:

df.apply(fxn, axis='index') 

Sie auf die Spalten anwenden müssen.

df.apply(fxn, axis='columns') 

Also für Sie:

States.apply(scoring_algorithm, axis='columns') 

und ich bekomme:

Alaska  104 
Arizona 108 
dtype: int64 
+0

Großartig! Dies ist perfekt. Vielen Dank! – nev

Verwandte Themen