【问题标题】:Translate excel formula to python script using current and previous values as calculations progress over time随着计算随着时间的推移,使用当前值和以前的值将 excel 公式转换为 python 脚本
【发布时间】:2019-12-15 23:53:37
【问题描述】:

原来的问题被错误地陈述了。问题涉及三列: 首先是一个值数组 (1,2,3,...) second 是由 array1 乘以常数得到的数组。这 第三个是一个数组,它是通过操作诸如 max(array2 的当前值,array3 的先前值)之类的函数而产生的,使得 array3 的第一个条目为空/不存在。因此,array3 使用了对自身的先前评估...这就是为什么 array3 的第一个条目不存在的原因。

我没有成功定义第三个数组的变量。在自身定义中引用同一个变量时出现“未解析的引用”等错误;我找到了解决方法,以避免将浮点数乘以数组时出现“浮点数不可下标”错误……但到目前为止,我还无法完成解析变量中数组的当前值和先前值的任务。请帮忙!

根据最后的提问:

constant1 = 2

array1 = [1, 2, 3, 4, 2...]

array2 = [i * constant1 for i in array1]

array3 = max(array2[0], array3[-1]) -----> please note correction of the problem statement...prior value of array3 is needed to evaluate current value of array3

但是 array3 产生了一个我无法解决的错误。不可订阅...

【问题讨论】:

  • 在 python array2[-1] 中不应该产生错误,它是数组的最后一个成员。 -ve 表示倒数。问题是 array3 不是数组,你在 2 个值中做最大值,所以它只是一个值而不是数组。
  • 我错误地陈述了这个问题。道歉。 array3 需要评估 array2 的当前值和 array3 的先前值。我用下标 [0] 表示“当前值”,而我在问题描述中使用 [-1] 表示“先验值”。

标签: python excel


【解决方案1】:

您必须创建一个新数组并像这样计算每个成员。或使用 pandasnumpy 之类的包进行计算。

constant1 = 2

array1 = [1, 2, 3, 4, 2]

array2 = [i * constant1 for i in array1]

array3 = [None,array2[0]]
for i in range(2,len(array1)):
    array3.append(max(array2[i], array3[i-1]))

print(array3)
#Prints [None, 4, 6, 8, 8]

您的代码array3=max(array1[0], array2[-1]) 输出单个值,即array1 的第一个元素和array2 的最后一个元素的最大值,因此它不可下标,打印该值,您会看到。

【讨论】:

  • this post,可以创建一个滞后列然后求差,NA值显示为NaN,还有其他操作。
  • 我错误地陈述了这个问题。请参阅上面的更正。
  • 我已经编辑了答案以使其工作,但我认为您的问题陈述没有意义,因为如果您将 max 与 array3 的先前值进行比较,并且 array3 的第一个成员是 N/ A,你所有的值都是 NA,因为 max(someValue,NA)=NA.
  • 谢谢 - 绕过初始 NA,使用零值很好,您的代码适用于定义的一组数组,其中 len 解析但对于流数据系列,我正在获取索引范围误差。任何想法如何解决?有没有使用不使用 len 的 pandas 或 numpy 的替代解决方案?
  • 流式数据集是什么意思?请正确定义您的问题。如果你有 array1= 东西,那么它是固定的。在不知道如何获取数据流的情况下,我无法帮助您。我可以猜测使用 while 循环可能会解决您的问题,只需计算该循环中所有数组的每个成员。
猜你喜欢
  • 2016-10-07
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多