Прямолинейно, если оператор получает ValueError: Истинное значение Серии неоднозначно - PullRequest
0 голосов
/ 08 января 2020

У меня есть этот, казалось бы, простой фрагмент кода, в котором я вычисляю уровень топлива для работы топливных элементов. Если я выполняю код построчно, я получаю действительные результаты, но когда я пытаюсь выполнить весь условный оператор, я получаю «ValueError: Истинное значение Series является неоднозначным. Используйте a.empty, a.bool (), a. item (), a.any () или a.all (). " У меня закончились идеи для решения этой проблемы, любая помощь очень приветствуется.

fuel=pd.DataFrame()
if df3['DCS1'].tail(1)==1:
    fuel['fuel left']=56-(df3['Methanol consumed'].tail(1))
else:
    fuel['fuel left']=28-(df3['Methanol consumed'].tail(1))```

1 Ответ

0 голосов
/ 08 января 2020

tail(1) возвращает серию с одним элементом. Сравнение ряда со скаляром дает другую серию True / False. Эта вторая серия доставила вам неприятности: несмотря на то, что она является одноэлементной, pandas не хочет определять значение истинности для вас.

Вы можете явно указать значение истинности:

if np.all(df3['DCS1'].tail(1)==1):
    # do things

Или извлеките последний элемент столбца в виде скаляра:

if df['DCS1'].iloc[-1] == 1:
    # do things
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...