วิธีแก้ไขใน pandas: ค่าความจริงของซีรีส์ไม่ชัดเจน
ข้อผิดพลาดที่คุณอาจพบใน Python คือ:
ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามกรอง DataFrame ของแพนด้าโดยใช้คำ และ และ หรือ แทนที่จะใช้ อักขระ & และ | ผู้ประกอบการ
บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเราสร้าง DataFrame แพนด้าต่อไปนี้:
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
ตอนนี้ สมมติว่าเรากำลังพยายามกรองแถวที่ทีมมีค่าเท่ากับ “A” และ คะแนนน้อยกว่า 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().
หรือสมมติว่าเราพยายามกรองแถวที่ทีมเท่ากับ “A” หรือ จุดที่น้อยกว่า 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().
ในทั้งสองสถานการณ์ เราได้รับข้อผิดพลาดที่บอกเราว่าค่าความจริงของซีรีส์ไม่ชัดเจน
วิธีการแก้ไขข้อผิดพลาด
เพื่อหลีกเลี่ยงข้อผิดพลาดนี้เมื่อกรอง เราจำเป็นต้องตรวจสอบให้แน่ใจว่าเราใช้ & และ | องค์ประกอบ ผู้ประกอบการ
ตัวอย่างเช่น เราสามารถใช้โค้ดต่อไปนี้เพื่อกรองแถวที่ทีมเท่ากับ “A” และ คะแนนน้อยกว่า 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
หรือเราสามารถใช้โค้ดต่อไปนี้เพื่อกรองแถวที่ทีมเท่ากับ “A” หรือ คะแนนน้อยกว่า 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
ในทั้งสองสถานการณ์ เราไม่ได้รับข้อผิดพลาดเนื่องจากเราใช้ & และ | องค์ประกอบ ผู้ประกอบการ
หมายเหตุ : สิ่งสำคัญคือต้องใส่วงเล็บล้อมรอบแต่ละเงื่อนไขเมื่อกรอง Pandas DataFrame ตามเงื่อนไขหลายข้อ มิฉะนั้นคุณจะได้รับข้อผิดพลาด
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข: โมดูล “pandas” ไม่มีแอตทริบิวต์ “dataframe”
วิธีแก้ไขใน Pandas: SettingWithCopyWarning
วิธีแก้ไขใน Pandas: TypeError: ไม่มีข้อมูลตัวเลขให้ลงจุด