【发布时间】:2016-06-04 22:36:53
【问题描述】:
我对以下设计有疑问。我正在寻找以下循环参考问题的矢量化解决方案。 Value(由 func1 计算)使用来自number(由 func2 计算)的内容,number 之后增加了Value,所有内容都将通过 build() 在数据框中生成。
class test(object):
def __init__(self, bool, start=100):
self.start = start
self.bool = bool
self.value = self.func1()
self.number = self.func2()
def func1(self):
if bool==True:
value = **`here value from func2`**/ 2
else:
value = 0
return value
def func2(self):
number = start + self.value
return number
def build(self):
df = pd.DataFrame()
df['bool'] = self.bool
df['value']= self.value
df['number'] = self.number
所以最后数据框应该是这样的:
bool = pd.Series([False, True, False, True, False,.....])
bool value number
Index
0 False 0 100
1 True 50 100
2 False 0 150
3 True 75 150
4 False 0 225
我的问题是:如何在不迭代的情况下使用 value 和 number 的类和单独的方法创建它?问题是value 依赖于number,反之亦然(循环引用)。
编辑:虽然这里没有以这种方式建模,但该数字可能是一个现金账户,并根据账户规模对可以购买的一定数量的股票进行估值。然后,帐户大小会根据股票发生的情况增加/减少。主要困难如何定义用于number(帐户)的公式。您有一个起始值,但随后需要根据未来增加。但如果你这样写:
number = start + self.value ((which are the proceeds/results of other columns))
它在第一行不起作用,因为self.value 尚不存在。因此我使用了循环引用这个术语。
【问题讨论】:
-
试着描述你想做什么,而不描述你是怎么做的。我并没有完全按照你在最后一段中的描述尝试做的事情。
标签: python class pandas methods