Оценка значений рядов панд с помощью логических выражений и операторов if
У меня проблемы с оценкой значений из словаря с помощью операторов if.
Имеется следующий словарь, который я импортировал из фрейма данных (если это имеет значение):
>>> 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
Я попытался оценить следующую оценку, чтобы установить значение последнего значенияActive
:
if pnl[company].tail(1)['Active']==1:
print 'yay'
Тем не менее, я столкнулся со следующим сообщением об ошибке:
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().
Это удивило меня, учитывая, что я мог отобразить нужное значение, используя приведенную выше команду без оператора if:
>>> pnl[company].tail(1)['Active']
30: 2 0
Name: Active, dtype: object
Учитывая, что значение явно равно нулю, а индекс равен 2, я попробовал следующее для краткой проверки работоспособности и обнаружил, что все происходит не так, как я мог бы ожидать:
>>> if pnl[company]['Active'][2]==0:
... print 'woo-hoo'
... else:
... print 'doh'
doh
Мой вопрос:
1) Что здесь может происходить? Я подозреваю, что неправильно понимаю словари на каком-то фундаментальном уровне.
2) Я заметил, что когда я поднимаю любое значение этого словаря, число слева увеличивается на 1. Что это представляет? Например:
>>> 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
Заранее благодарю за любую помощь.