วิธีแก้ไข: ความยาวของค่าไม่ตรงกับความยาวของดัชนี


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้นุ่นคือ:

 ValueError: Length of values does not match length of index

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามกำหนดค่าอาร์เรย์ของค่า NumPy ให้กับคอลัมน์ใหม่ใน DataFrame ของ pandas แต่ความยาวของอาร์เรย์ไม่ตรงกับความยาวปัจจุบันของดัชนี

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#define DataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14],
                   ' assists ': [5, 7, 13, 12]})

#view DataFrame
print (df)

   assist points
0 25 5
1 12 7
2 15 13
3 14 12

ตอนนี้ สมมติว่าเราพยายามเพิ่มคอลัมน์ใหม่ที่เรียกว่า “bounces” เป็นอาร์เรย์ NumPy:

 import numpy as np

#attempt to add 'rebounds' column
df[' rebounds '] = np. array ([3, 3, 7])

ValueError : Length of values (3) does not match length of index (4)

เราได้รับ ValueError เนื่องจากเรากำลังพยายามเพิ่มอาร์เรย์ NumPy ที่มีความยาว 3 ให้กับ DataFrame ที่มีดัชนีความยาว 4

วิธีการแก้ไขข้อผิดพลาด

วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือเพียงสร้างคอลัมน์ใหม่โดยใช้ชุด pandas แทนที่จะเป็นอาร์เรย์ NumPy

ตามค่าเริ่มต้น หากความยาวของชุดแพนด้าไม่สอดคล้องกับความยาวของดัชนี DataFrame ค่า NaN จะถูกป้อน:

 #create 'rebounds' column
df[' rebounds '] = pd. Series ([3, 3, 7])

#view updated DataFrame
df

	points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 NaN

การใช้ชุดหมีแพนด้าทำให้เราสามารถเพิ่มคอลัมน์ “ตีกลับ” ได้สำเร็จและค่าที่หายไปจะถูกเติมด้วย NaN

โปรดทราบว่าเราสามารถแปลงค่า NaN เป็นค่าอื่น (เช่นศูนย์) ได้อย่างรวดเร็วโดยใช้เมธอด fillna() ดังต่อไปนี้:

 #fill in NaN values with zero
df = df. fillna (0)

#view updated DataFrame
df

points assists rebounds
0 25 5 3.0
1 12 7 3.0
2 15 13 7.0
3 14 12 0.0

โปรดทราบว่าค่า NaN ถูกแปลงเป็นศูนย์

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

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

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