【问题标题】: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'

从图中可以看出:

【问题讨论】:

  • 请发布实际数据,而不是图片!

标签: python


【解决方案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)

【讨论】:

  • 超级有用且非常清晰的解释。谢谢!
猜你喜欢
  • 2016-01-10
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
相关资源
最近更新 更多