Одна ошибка, с которой вы можете столкнуться в Python, следующая:
TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]
Эта ошибка обычно возникает, когда вы пытаетесь отфильтровать кадр данных pandas, используя несколько условий, но не можете использовать круглые скобки вокруг каждого отдельного условия.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'points': [18, 22, 19, 14, 14, 11, 20, 28],
'assists': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
print(df)
team points assists rebounds
0 A 18 5 11
1 A 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12
Теперь предположим, что мы пытаемся отфильтровать DataFrame, чтобы отображались только строки, в которых столбец команды равен «A», а столбец очков больше 15:
#attempt to filter DataFrame
df.loc[df.team == 'A ' & df.points > 15 ]
TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]
Мы получаем ошибку, потому что мы не заключили скобки вокруг каждого отдельного условия.
Как исправить ошибку
Чтобы исправить эту ошибку, нам просто нужно убедиться, что мы заключаем в скобки каждое отдельное условие при выполнении фильтра:
#filter DataFrame
df.loc[(df.team == 'A') & (df.points > 15 )]
team points assists rebounds
0 A 18 5 11
1 A 22 7 8
2 A 19 7 10
Обратите внимание, что мы можем успешно отфильтровать DataFrame, чтобы показать только те строки, в которых команда равна «А» и где количество баллов больше 15.
Обратите внимание, что нам также нужно заключать в скобки каждое отдельное условие, если мы используем знак или «|». вместо этого оператор:
#filter rows where team is equal to 'A' *or* points is greater than 15
df.loc[(df.team == 'A') | (df.points > 15 )]
team points assists rebounds
0 A 18 5 11
1 A 22 7 8
2 A 19 7 10
3 A 14 9 6
6 B 20 9 9
7 B 28 4 12
Обратите внимание, что мы снова избегаем ошибок.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в pandas:
Как исправить: модуль «Pandas» не имеет атрибута «фрейм данных»
Как исправить: TypeError: нет числовых данных для построения
Как исправить KeyError в Pandas