2016-05-07 15 views
0

in Python Ich habe einen pandas Datenrahmen ähnlich den unten:Python/Pandas: Conditional Summierung der Spalten

  | AUG12    | UNDERLYING | VOL | 
      |---------------------|   |  | 
      | 45 | 49 | 50 | 55 |   |  | 
====================================================| 
2012-11-14 | 1 | 1 | 2 | 3 | 49   | ? | 
...   ... ... ... ... 

Die Aufgabe ist: Für jede Zeile, die Spaltennamen finden, die als UNDERLYING größer sind (49), summiere die Werte (2 + 3) und gebe das Ergebnis in VOL (5) ein. Wie kann ich dies in Python erreichen? Vielen Dank im Voraus!

Antwort

1

Sie könnten DataFrame.apply Funktion

def conditional_sum(row): 
    underlying = row['UNDERLYING'][0] # extra '[0]' is required due to multi leve index in column names 
    return row.loc['AUG12'].apply(lambda x: 0 if x < underlying else x).sum() 

df.apply(conditional_sum, axis=1) 
+0

verwenden, das ist genau das, was ich suchte. Ich musste "AUG12" durch den Bereich meiner Spalten ersetzen. Aber dein Schnipsel hat es geschafft! – sascha