📜  ValueError:使用可迭代设置时必须具有相等的 len 键和值 - Python (1)

📅  最后修改于: 2023-12-03 15:35:33.684000             🧑  作者: Mango

ValueError: Length of values must match length of index when setting with an iterable - Python

当我们在使用Python时,有时会遇到像这样的ValueError错误:Length of values must match length of index when setting with an iterable。这个错误表示我们尝试将一个可迭代对象赋值给一个非空DataFrame或Series对象,但是我们的可迭代对象的长度与我们的DataFrame或Series对象的长度不匹配。

这个错误通常发生在以下情况下:

  1. 我们试图用长度不匹配的列表或项来初始化一个Series或DataFrame对象。
  2. 我们试图向DataFrame或Series对象中添加长度不匹配的列或行。

解决这个错误的方法如下:

  1. 确保我们的可迭代对象的长度与我们的DataFrame或Series对象的长度相匹配。
  2. 如果我们在创建DataFrame或Series对象时使用了一个不匹配的长度,请修复我们的代码,以便它创建一个长度匹配的对象。
  3. 如果我们在添加列或行时使用了一个不匹配的长度,请修复我们的代码,以便它添加一个匹配长度的列或行。

以下是一个示例,演示了如何解决ValueError错误:Length of values must match length of index when setting with an iterable:

import pandas as pd

# our DataFrame
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

# a list to add as a new column
new_column = [7, 8]

# this will raise a ValueError
df["C"] = new_column

# here's the fix: we need to make the list the same length as the DataFrame
new_column = [7, 8, 9]
df["C"] = new_column

print(df)

运行以上代码,输出结果如下:

   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

在该示例中,我们刚开始尝试将一个长度为2的列表作为一个新的DataFrame列添加到我们的DataFrame中。由于我们的DataFrame有3行,这将导致一个ValueError错误。然后,我们将该列表改为与DataFrame长度相同的长度,此时代码正常运行并添加了列。