Есть ли ошибка оператора, потому что после выполнения он говорит неоднозначную ошибку. Какую ошибку я делаю? - PullRequest
2 голосов
/ 23 января 2020
elder_data.head()
    Sex      Name       Fund    Elder Rating    Caretaker Rating
0   Female  A'A NAYHIA  56154           3               3
1   Male    AADHAV      31118           3               4
2   Female  AADHYA      23523           3               2
3   Male    AADIT       13202           2               2
4   Male    AADITH      39505           2               4


 if elder_data['Elder Rating'] >=3 | elder_data['Caretaker Rating'] >=3:
    elder_data["Status"]="Approved"
else:
    elder_data["Status"]="Not Approved"
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-646b023be552> in <module>
----> 1 if elder_data['Elder Rating'] >=3 | elder_data['Caretaker Rating'] >=3:
      2     elder_data["Status"]="Approved"
      3 else:
      4     elder_data["Status"]="Not Approved"

~\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
   1476         raise ValueError("The truth value of a {0} is ambiguous. "
   1477                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1478                          .format(self.__class__.__name__))
   1479 
   1480     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

** Я хочу создать новый столбец «статус», в котором если рейтинг старейшины и смотрителя превышает 3, статус будет утвержден

Но я получаю ошибку. Как это можно исправить? **

Ответы [ 2 ]

5 голосов
/ 23 января 2020

Первая проблема отсутствует () в цепочечных условиях, поскольку используется приоритет оператора и для заданных новых значений numpy.where:

elder_data["Status"] = np.where((elder_data['Elder Rating'] >=3) | 
                                (elder_data['Caretaker Rating'] >=3),
                               'Approved',
                               'Not Approved')
1 голос
/ 23 января 2020

Как @jezrael упомянул в своем ответе, Вы пропускаете ().

Вы также можете использовать логическую маску для индексации кадра данных и замены значений, используя loc, например,

mask = (elder_data['Elder Rating'] >=3) | (elder_data['Caretaker Rating'] >=3)

elder_data['Status'] = 'Not Approved'
elder_data.loc[mask] = 'Approved'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...