Auswerten von Pandas-Serienwerten mit logischen Ausdrücken und if-Anweisungen
Ich habe Probleme beim Auswerten von Werten aus einem Wörterbuch mithilfe von if-Anweisungen.
Dazu das folgende Wörterbuch, das ich aus einem Datenframe importiert habe (falls es darauf ankommt):
>>> pnl[company]
29: Active Credit Date Debit Strike Type
0 1 0 2013-01-08 2.3265 21.15 Put
1 0 0 2012-11-26 40 80 Put
2 0 0 2012-11-26 400 80 Put
Ich habe versucht, die folgende Aussage auszuwerten, um den Wert des letzten Wertes von zu ermittelnActive
:
if pnl[company].tail(1)['Active']==1:
print 'yay'
Allerdings wurde ich mit folgender Fehlermeldung konfrontiert:
Traceback (most recent call last):
File "<pyshell#69>", line 1, in <module>
if pnl[company].tail(1)['Active']==1:
File "/usr/lib/python2.7/dist-packages/pandas/core/generic.py", line 676, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Dies überraschte mich, da ich den gewünschten Wert mit dem obigen Befehl ohne die if-Anweisung anzeigen konnte:
>>> pnl[company].tail(1)['Active']
30: 2 0
Name: Active, dtype: object
Angesichts der Tatsache, dass der Wert eindeutig Null und der Index 2 ist, habe ich Folgendes für eine kurze Überprüfung der Integrität versucht und festgestellt, dass die Dinge nicht so liefen, wie ich es erwartet hätte:
>>> if pnl[company]['Active'][2]==0:
... print 'woo-hoo'
... else:
... print 'doh'
doh
Meine Frage ist:
1) Was könnte hier los sein? Ich vermute, ich missverstehe Wörterbücher auf einer fundamentalen Ebene.
2) Mir ist aufgefallen, dass sich die Zahl auf der linken Seite um 1 erhöht, wenn ich einen bestimmten Wert dieses Wörterbuchs aufrufe. Was bedeutet das? Zum Beispiel:
>>> pnl[company].tail(1)['Active']
31: 2 0
Name: Active, dtype: object
>>> pnl[company].tail(1)['Active']
32: 2 0
Name: Active, dtype: object
>>> pnl[company].tail(1)['Active']
33: 2 0
Name: Active, dtype: object
>>> pnl[company].tail(1)['Active']
34: 2 0
Name: Active, dtype: object
Vielen Dank im Voraus für jede Hilfe.