📌  相关文章
📜  如何修复:ValueError:所有数组必须具有相同的长度

📅  最后修改于: 2022-05-13 01:55:09.048000             🧑  作者: Mango

如何修复:ValueError:所有数组必须具有相同的长度

在本文中,我们将修复错误:所有数组必须具有相同的长度。当我们创建具有不同长度列的 pandas 数据框时,我们会收到此错误,但是当我们创建 pandas 数据框时,列应该相等,而不是在列的缺陷单元格中可能存在 NaN。

错误:

ValueError: All arrays must be of the same length

此错误发生的案例举例:

Python3
# import pandas module
import pandas as pd
  
  
# consider the lists
sepal_length = [5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 
                4.6, 5.0, 4.4, 4.9]
sepal_width = [4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9]
  
# DataFrame with two columns
df = pd.DataFrame({'sepal_length(cm)': sepal_length,
                   'sepal_width(cm)': sepal_width})
# display
print(df)


Python3
# importing pandas
import pandas as pd
# importing statistics
import statistics as st
  
# consider the lists
sepal_length = [5.1, 4.9, 4.7, 4.6, 5.0, 5.4,
                4.6, 5.0, 4.4, 4.9]
sepal_width = [4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9]
  
  
# if length are not equal
if len(sepal_length) != len(sepal_width):
    # Append mean values to the list with smaller length
    if len(sepal_length) > len(sepal_width):
        mean_width = st.mean(sepal_width)
        sepal_width += (len(sepal_length)-len(sepal_width)) * [mean_width]
    elif len(sepal_length) < len(sepal_width):
        mean_length = st.mean(sepal_length)
        sepal_length += (len(sepal_width)-len(sepal_length)) * [mean_length]
  
  
# DataFrame with 2 columns
df = pd.DataFrame({'sepal_length(cm)': sepal_length,
                   'sepal_width(cm)': sepal_width})
print(df)


输出:

ValueError: arrays must all be same length

错误原因:

将成为列的列表 sepal_length 的长度不等于列表 sepal_witdth 列的长度。

len(sepal_length)!= len(sepal_width)

修复错误:

可以通过将值添加到有缺陷的列表或删除长度较大的列表(如果它有一些无用的值)来修复错误。基于对列表中剩余值的观察,可以将 NaN 或任何其他值添加到缺陷值。

句法:

考虑两个列表 list1 和 list2:

if (len(list1) > len(list2)):
       list2 += (len(list1)-len(list2)) * [any_suitable_value]
elif (len(list1) < len(list2)):
        list1 += (len(list2)-len(list1)) * [any_suitable_value]

这里, any_suitable_value可以是列表的平均值,也可以是 0 或 NaN,具体取决于要求。

示例

Python3

# importing pandas
import pandas as pd
# importing statistics
import statistics as st
  
# consider the lists
sepal_length = [5.1, 4.9, 4.7, 4.6, 5.0, 5.4,
                4.6, 5.0, 4.4, 4.9]
sepal_width = [4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9]
  
  
# if length are not equal
if len(sepal_length) != len(sepal_width):
    # Append mean values to the list with smaller length
    if len(sepal_length) > len(sepal_width):
        mean_width = st.mean(sepal_width)
        sepal_width += (len(sepal_length)-len(sepal_width)) * [mean_width]
    elif len(sepal_length) < len(sepal_width):
        mean_length = st.mean(sepal_length)
        sepal_length += (len(sepal_width)-len(sepal_length)) * [mean_length]
  
  
# DataFrame with 2 columns
df = pd.DataFrame({'sepal_length(cm)': sepal_length,
                   'sepal_width(cm)': sepal_width})
print(df)

输出