【问题标题】:Replacing pandas cell value with a new list generates ValueError: Must have equal len keys and value when setting with an iterable用新列表替换熊猫单元格值会生成 ValueError: Must have equal len keys and value when setting with an iterable
【发布时间】:2021-05-19 18:48:32
【问题描述】:

我想用一个新的更新列表来更新一个带有列表的单元格的值。但是,当我尝试使用 .iloc 替换该值时,我得到一个 ValueError

d = {'title':['GrownUps', 'Toy Story', 'Toy Story', 'Avatar', 'Avatar', 'Avatar'], 'year': [["Hello", "World"],
                                                                                            ["Not", "Object", "!"],
                                                                                            1995, 2000, 2005, 2006]}
dataset_SO=pd.DataFrame(d)

dataset_SO.iloc[0,1]=["hi", "cat", "dog"] #this line produces the ValueError

ValueError:使用可迭代设置时必须具有相等的 len 键和值

我知道这可能是一个愚蠢的问题,但是试图将这个["hi", "cat", "dog"] 变成一个对象,比如np.object0(["hi", "cat", "dog"])。或者this question 没有帮助我解决我的问题。

【问题讨论】:

  • 您使用的是哪个版本的熊猫?使用 pandas 1.1.4 复制粘贴代码时,我无法重现您的错误。
  • @ndclt 我使用 pandas 1.2.1。
  • 我完全使用 pandas 1.2.2 复制了您上面的示例,效果很好。
  • 我也没有。我无法重现错误。
  • 我在运行您的代码时没有收到任何错误。它可能是 python 或 pandas 版本。你能更新熊猫(pip install -U pandas)然后再试一次。

标签: python pandas


【解决方案1】:

这里是关于如何在 python 中更新包的指南

Update python packages

【讨论】:

  • 感谢豪尔赫的指导。我能问一些其他相关的吗?如果我创建一个熊猫数据框(version1 2.1)并保存它。然后升级到 pandas 1.2.2 是否应该使用新版本再次创建数据框以修复任何错误?
  • 你是如何保存数据框的?传统上最好将其保存为 csv,但取决于您的需要/要求。
  • pd.to_pickle 和 pd 是 pandas 1.2.1 版本。所以我假设我必须用 1.2.2 版重新创建它
  • 知道了。不确定您正在处理的熊猫版本之间对保存部分进行了哪些更改。建议尝试打开数据框,看看会发生什么。希望格式不会改变。
  • 格式没有改变,但上面的虚拟数据集的小技巧不适用于在 pandas 1.2.1 中创建和保存的数据集,即使我将 pandas 更新到 1.2.2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2019-11-24
  • 2018-09-18
  • 2016-07-07
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多