为啥我在for循环中进行了一些更改后键的值没有改变
Posted
技术标签:
【中文标题】为啥我在for循环中进行了一些更改后键的值没有改变【英文标题】:Why the value of the key is not changed after I made some change in the for loop为什么我在for循环中进行了一些更改后键的值没有改变 【发布时间】:2020-07-08 19:57:24 【问题描述】:我有一个字典变量 OutputFrames,我尝试用 ffill 和 bfill 方法 df.fillna(method = 'ffill').fillna(method='bill')
填充 NaN。当我在 for 循环中打印它时,它显示了正确的结果。但是当我使用该键检查字典时,它显示没有任何变化。
有人知道为什么吗?
我也试过
chartFrame.fillna(method='ffill', inplace = True).fillna(method='bfill', inlace = True)
因为键的值中有一列(SBT)没有填充,所以它也不起作用---AttributeError: 'NoneType' object has no attribute 'fillna'
。
从图中可以看出:
【问题讨论】:
请发布实际数据,而不是图片! 【参考方案1】:当您在 for 循环中执行 chartFrame = chartFrame.fillna(method = 'ffill').fillna(method='bill')
时,您实际上并没有更改 OutputFrames
中的数据框。您只是将其分配给变量chartFrame
。打印该变量会显示正确的结果,但不会存储。
在当前键处重新分配帧(首选):
OutputFrames[key] = chartFrame.fillna(method = 'ffill').fillna(method='bfill')
或者使用inplace=True
而不链接操作。当您执行就地操作时,数据框会就地更改,并且不会返回任何内容。这基本上会导致None.nafill()
导致上述错误。
chartFrame.fillna(method='ffill', inplace = True)
chartFrame.fillna(method='bfill', inplace = True)
【讨论】:
超级有用且非常清晰的解释。谢谢!以上是关于为啥我在for循环中进行了一些更改后键的值没有改变的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net 后台的Update语句执行成功了,为啥数据库的值没有改变