Если, и оператор не выводит точные результаты в Python - PullRequest
2 голосов
/ 15 марта 2019
df.loc[(df['Platform'] == 'A321') and (df['Days'] <= 14), 'Mods Applicable'] = 'CFM56 9th Stage Duct'

Я пытаюсь получить выходные данные Платформ для A321 и Дней меньше или равные 14, чтобы распечатать следующие «Применимые моды», но это не выводит эти Платформы И Дни.

Результаты вывода:

Output results

IF & Output:

IF & Output

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Попробуйте использовать «&» вместо «и»:

df = pd.DataFrame({'Platform': ['A123', 'A321', 'A321', 'B123'],
                   'Days': [10, 13, 20, 5]})

df.loc[(df['Platform'] == 'A321') & (df['Days'] <= 14), 'Mods Applicable'] = 'CFM56 9th Stage Duct'

print(df)

      Platform  Days       Mods Applicable
    0     A123    10                   NaN
    1     A321    13  CFM56 9th Stage Duct
    2     A321    20                   NaN
    3     B123     5                   NaN

Я могу воспроизвести ту же ошибку, используя «и» вместо «&»:

Traceback (most recent call last):

  File "<ipython-input-128-7957a219684b>", line 1, in <module>
    df.loc[(df['Platform'] == 'A321') and (df['Days'] <= 14), 'Mods Applicable'] = 'CFM56 9th Stage Duct'

  File "/Users/nathanielgates/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py", line 1479, 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().
0 голосов
/ 15 марта 2019

Это потому, что сравнение Series со значением также возвращает Series. Это означает, что результаты (df['Platform'] == 'A321') и (df['Days'] <= 14) являются Series из true/false значений, и по умолчанию он не разрешается до единственного значения true или false. Так что вы не можете and это!

Вы можете заменить and на &. Так бы и стало:

df.loc[(df['Platform'] == 'A321') & (df['Days'] <= 14), 'Mods Applicable'] = 'CFM56 9th Stage Duct'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...