У меня возникли проблемы с оценкой значений из словаря с использованием операторов 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
Заранее благодарю за любую помощь.
Series
. - person Daniel Roseman   schedule 05.05.2014pnl[company].tail(1)['Active'].any()==1
, хотя это все еще одно значение - person EdChum   schedule 05.05.2014The truth value of a Series is ambiguous
, из исходных файлов библиотеки pandas. - person Greg Hewgill   schedule 05.05.2014print(type(pnl[company].tail(1)['Active']))
- person EdChum   schedule 05.05.2014print yay
, он не увеличивается. Вот результат, если вам интересно. - person neanderslob   schedule 05.05.2014