Cara memperbaikinya di pandas: nilai kebenaran suatu rangkaian tidak jelas
Kesalahan yang mungkin Anda temui di Python adalah:
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Kesalahan ini biasanya terjadi ketika Anda mencoba memfilter DataFrame pandas menggunakan kata-kata dan dan atau alih-alih menggunakan karakter & dan | operator.
Tutorial ini menjelaskan cara mengatasi kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita membuat DataFrame panda 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 misalkan kita mencoba memfilter baris yang timnya sama dengan “A” dan poinnya kurang dari 20:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Atau misalkan kita mencoba memfilter baris yang timnya sama dengan “A” atau yang poinnya kurang dari 20:
#attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Dalam kedua skenario, kami menerima kesalahan yang memberi tahu kami bahwa nilai kebenaran suatu rangkaian bersifat ambigu.
Bagaimana cara memperbaiki kesalahan tersebut
Untuk menghindari kesalahan ini saat memfilter, kita perlu memastikan bahwa kita menggunakan & dan | elemen. operator.
Misalnya, kita dapat menggunakan kode berikut untuk memfilter baris dengan tim yang sama dengan “A” dan poinnya kurang dari 20:
#filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]
team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6
Atau kita bisa menggunakan kode berikut untuk memfilter baris yang timnya sama dengan “A” atau poinnya kurang dari 20:
#filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]
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
Dalam kedua skenario kami tidak menerima kesalahan karena kami menggunakan & dan | elemen. operator.
Catatan : Penting untuk menyertakan tanda kurung di sekitar setiap kondisi saat memfilter DataFrame pandas berdasarkan beberapa kondisi, jika tidak, Anda akan menerima kesalahan.
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara memperbaiki: Modul “pandas” tidak memiliki atribut “dataframe”.
Cara memperbaiki di Pandas: SettingWithCopyWarning
Cara Memperbaiki di Pandas: TypeError: Tidak ada data numerik untuk diplot