【问题标题】:too many values to unpack (expected 2) when using for loops使用 for 循环时解包的值太多(预期为 2)
【发布时间】:2021-11-04 10:25:31
【问题描述】:

我不断收到错误消息:要解压的值太多(预期为 2) 当我试用以下代码时:


sheetlist = [df1, df2, df3, df4, df5]

for i, j in sheetlist :
    j = i +1 
    final = i.merge(j, how = "outer", on = "columnname")


final.head()

有人知道怎么解决吗?

这是完整的追溯

ValueError                                Traceback (most recent call last)

<ipython-input-54-981bc6246be4> in <module>()
      3 sheetlist = [df1, df2, df3, df4, df5]
      4 
----> 5 for i,j in sheetlist :
      6     j = i + 1
      7     final = i.merge(j, how = "outer", on = "columnname")

ValueError: too many values to unpack (expected 2)

【问题讨论】:

  • for i in sheetlist
  • 另外,尝试减少合并而不是 for 循环
  • 每当您报告 Python 错误时,请在问题中包含 complete 回溯(即完整的错误消息)。那里有有用的信息,包括哪一行产生了错误。

标签: python pandas list


【解决方案1】:

对于初学者,您需要@not_speshal 所说的for i in sheetlist。此外,请注意,python 中的 for 与许多其他语言没有什么不同,它将枚举列表中的 items,而不是索引。

因此,您可能想要这样的东西:for i in range(len(sheetlist)),现在i 确实是有效的索引。要访问列表中索引i 处的元素,请使用sheetlist[i]

【讨论】:

    【解决方案2】:

    错误在这里:

    for i, j in sheetlist :
    

    出现错误是因为您试图从列表中解压缩两个值,而该列表期望一个一个给出。

    【讨论】:

    • 哦.. 所以对于列表我只能解压 1 个值...?
    • 你一个一个去是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2020-05-11
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多