Как исправить: невозможно сравнить массив типа [float64] со скалярным типом [bool]
Ошибка, с которой вы можете столкнуться при использовании панд:
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Эта ошибка обычно возникает, когда вы пытаетесь подмножество DataFrame на основе нескольких условий и не можете заключить круглые скобки вокруг каждого отдельного условия.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, мы создаем следующий DataFrame pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], ' points ': [21, 30, 26, 29, 14, 29, 22, 16]}) #view DataFrame print (df) team position points 0 AG 21 1 AG 30 2 AF26 3AC 29 4 BG 14 5 BF 29 6 BF 22 7 BC 16
Теперь предположим, что мы пытаемся использовать функцию .loc для отображения только тех строк, где команда равна «A», а позиция равна «G»:
#attempt to only show rows where team='A' and position='G'
df. loc [df. team == ' A ' & df. position == ' G ']
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Мы получаем ошибку ValueError , потому что мы не заключали в круглые скобки отдельные условия.
Поскольку оператор & имеет приоритет над оператором == , панды не могут интерпретировать этот оператор в правильном порядке.
Как исправить ошибку
Самый простой способ исправить эту ошибку — просто добавить круглые скобки вокруг отдельных условий следующим образом:
#only show rows where team='A' and position='G'
df. loc [(df. team == ' A ') & (df. position == ' G ')]
team position points
0 A G 21
1 A G 30
Обратите внимание, что мы не получаем никаких ValueError и нам удается успешно подмножество DataFrame.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить: столбцы перекрываются, но суффикс не указан
Как исправить: вы пытаетесь объединить столбцы object и int64.
Как исправить: невозможно определить строку с несовпадающими столбцами