วิธีแก้ไข: valueerror: ดัชนีมีรายการที่ซ้ำกัน ไม่สามารถเปลี่ยนรูปร่างได้
ข้อผิดพลาดที่คุณอาจพบเมื่อใช้นุ่นคือ:
ValueError : Index contains duplicate entries, cannot reshape
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามปรับรูปร่าง DataFrame ของ pandas โดยใช้ฟังก์ชัน pivot() แต่มีหลายค่าใน DataFrame ผลลัพธ์ที่ใช้ค่าดัชนีเดียวกัน
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 4, 9, 9, 12]}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 4 5 B G 9 6 B F 9 7 B F 12
ตอนนี้ สมมติว่าเราพยายามหมุน DataFrame โดยใช้ ทีม เป็นแถวและ ตำแหน่ง เป็นคอลัมน์:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
เราได้รับข้อผิดพลาดเนื่องจากหลายแถวใน DataFrame แชร์ค่าเดียวกันสำหรับ ทีม และ ตำแหน่ง
ดังนั้นเมื่อเราพยายามปรับรูปร่าง DataFrame ใหม่ แพนด้าจะไม่รู้ว่าจะแสดงค่า จุด ใดในแต่ละเซลล์ของ DataFrame ที่เป็นผลลัพธ์
วิธีการแก้ไขข้อผิดพลาด
เพื่อแก้ไขข้อผิดพลาดนี้ เราสามารถใช้ฟังก์ชัน pivot_table() กับอาร์กิวเมนต์ aggfunc เฉพาะเพื่อรวมค่าข้อมูลในลักษณะใดลักษณะหนึ่งได้
ตัวอย่างเช่น เราสามารถใช้ pivot_table() เพื่อสร้าง DataFrame ใหม่ที่ใช้ ทีม เป็นแถว ตำแหน่ง เป็นคอลัมน์ และผลรวมของค่า จุด ในเซลล์ของ DataFrame:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดในครั้งนี้
ค่าใน DataFrame แสดงผลรวม คะแนน ของแต่ละ ทีม และการรวม ตำแหน่ง
โปรดทราบว่าเราสามารถใช้ค่าอื่นสำหรับ aggfunc ได้ เช่น ค่าเฉลี่ย:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' mean ')
position F G
team
At 8.0 6.0
B 10.5 6.5
การใช้อาร์กิวเมนต์ aggfunc ในฟังก์ชัน pivot_table() ทำให้เราสามารถหลีกเลี่ยงข้อผิดพลาดใดๆ ได้
หมายเหตุ: คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน pivot_table() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้