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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage