2017-12-05 1 views
0

나는이 포트폴리오 클래스를 가지고 있고 주식이 존재 하는지를 확인하는 AddStockShares 함수를 만들고 싶다. 그렇다면 기존 주식에 주식 수를 더하거나 그렇지 않으면 Exceptions를 던진다. 필자는 iloc을 사용하여 원하는 stock_ticker를 기반으로 원하는 공유 값을 얻기 위해 쿼리를 작성했지만 새로운 공유를 추가하면 올바른 함수에서 결과를 인쇄하더라도 dataFrame이 업데이트되지 않습니다. 어떤 제안?DataFrame이 업데이트되지 않는 이유는 무엇입니까?

import numpy as np 
import pandas as pd 

class Portfolio(object): 
"""description of class""" 



array_of_stock_prices = [] 
array_of_stock_names = [] 
array_of_shares=[] 
stocks = pd.DataFrame(np.column_stack([array_of_stock_prices, array_of_stock_names,array_of_shares])) 

def __init__(self): 
    print() 

def AddStock(self, stock_ticker, stock_price,num_shares): 
    if stock_ticker in self.array_of_stock_names: 
     raise ValueError('Ticker already exists') 
    else: 
     self.array_of_stock_names.append(stock_ticker) 

    self.array_of_stock_prices.append(stock_price) 

    if(num_shares<0): 
     raise ValueError('Number of shares cannot be negative,Check again') 
    else: 
     self.array_of_shares.append(num_shares) 

    self.stocks = pd.DataFrame(np.column_stack([self.array_of_stock_names, self.array_of_stock_prices,self.array_of_shares]), 
          columns=['Ticker', 'Price','Shares']) 

def BuyStockShares(self, stock_ticker, num_shares): 
    if stock_ticker in self.array_of_stock_names: 
     x=int(self.stocks.loc[self.stocks['Ticker']==stock_ticker,'Shares'])+num_shares 
     print(x) 
    else: 
     raise ValueError('Stock does not exist.Add stock first') 





por=Portfolio() 
por.AddStock('AAPLE',100,200) 
por.AddStock('SASA',500,10) 
por.AddStock('xv',500,50) 
por.BuyStockShares('xv',1000) 
print(por.stocks) 
+0

"주식이 있는지 여부를 확인한 다음 주식 수를 추가하면 코드가 다른 방법으로 사용됩니다. 존재하지 않는 경우에만 추가하고 이미 존재하는 경우 오류가 발생하는 경우에만 추가하십시오. 원하는 것을 결정하십시오. 존재하는 경우 또는 존재하지 않는 경우 추가 하시겠습니까? –

답변

1

해당 행을 업데이트해야합니다.

관련 문제