วิธีแก้ไข: 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: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *