У меня возникли проблемы с оценкой значений из словаря с использованием операторов 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
Заранее благодарим за помощь.