Cara memperbaiki: tidak dapat mengeksekusi "rand_" dengan array bertipe [int64] dan skalar bertipe [bool]


Kesalahan yang mungkin Anda temui di Python adalah:

 TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

Kesalahan ini biasanya terjadi ketika Anda mencoba memfilter DataFrame pandas menggunakan beberapa kondisi tetapi tidak dapat menggunakan tanda kurung di setiap kondisi individual.

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki panda DataFrame berikut:

 import pandas as pd

#createDataFrame
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 to 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

Sekarang katakanlah kita mencoba memfilter DataFrame untuk hanya menampilkan baris dengan kolom tim sama dengan “A” dan kolom poin lebih besar dari 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]

Kami menerima kesalahan karena kami belum menempatkan tanda kurung di sekitar setiap kondisi.

Bagaimana cara memperbaiki kesalahan tersebut

Untuk memperbaiki kesalahan ini, kita hanya perlu memastikan untuk menempatkan tanda kurung di sekitar setiap kondisi saat menjalankan filter:

 #filter DataFrame
df. loc [(df. team == ' A ') & (df. points > 15 )]

	team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10

Perhatikan bahwa kami berhasil memfilter DataFrame untuk hanya menampilkan baris dengan Tim sama dengan ‘A’ dan Poin lebih besar dari 15.

Perhatikan bahwa kita juga perlu menempatkan tanda kurung di sekitar setiap kondisi jika kita menggunakan a atau “| » operator sebagai gantinya:

 #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 to 22 7 8
2 A 19 7 10
3 A 14 9 6
6 B 20 9 9
7 B 28 4 12

Perhatikan bahwa kami sekali lagi menghindari kesalahan apa pun.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di panda:

Cara memperbaiki: Modul “pandas” tidak memiliki atribut “dataframe”.
Cara Memperbaiki: TypeError: Tidak ada data numerik untuk diplot
Cara Memperbaiki KeyError di Pandas

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *