首页 > 解决方案 > 如何迭代以计算新列中的一组值

问题描述

我正在尝试使用另一列“rand_price”创建一个新列“roc_30d”。新列本质上是 30 天的变化率。公式为(当前价格 - 30 个周期前的价格)/(30 个周期前的价格)。

我试图迭代“rand_price”以计算新列的值。然而,无济于事。非常感谢您的任何建议!

for i in df['rand_price']:
    results = (i-(i-30) / (i-30))
    df['roc_30d'] = results

最后,变量 i 和 results 只有 1 个 nan 值。理想情况下,我希望新列查看附加的 png。

标签: pythonpandasiteration

解决方案


i-(i-30) / (i-30)

这在代数上等价于i-1。你有几个问题:

  1. 您从当前价格中减去 30。你说你想要的是30天前的价格。为此,您需要遍历rows,而不是一列中的值,以便获得行号。从行号中减去 30,并使用它来定位 30 天前的值。
  2. 你的代数是错误的。比率的公式是值的差异除以时间段。您将一个数量除以自身,然后从当前价格中减去该数量。相反,尝试...

... 这个 ...

( [current_value] - [30_day_old_value] ) / 30

loc您可能需要通过有关 PANDAS 数据框的教程来学习使用下标和和iloc功能访问特定值的方法。


推荐阅读