У меня проблема с дизайном ниже. Я ищу векторизованное решение для ниже круговой справочной проблемы. Value
(рассчитано func1) использует контент от number
(рассчитанный func2), number
получает увеличенный на Value
после этого, и все будет создано в dataframe через build().круговая ссылка в классе в python
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
так в конце концов dataframe должен выглядеть следующим образом:
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
еще не существует. поэтому я использовал термин круглый справки.
Попробуйте описать, что вы хотите сделать, не описывая, как вы это делаете. Я не совсем понимаю, что вы пытаетесь сделать там с описанием в последнем абзаце. – LhasaDad