2017-12-05 25 views
0

私はこのポートフォリオクラスを持っています。ストックが存在するかどうかをチェックするAddStockShares関数を作成して、既存のものにシェア数を追加するか、それ以外の場合は除外します。私はilocを使ってクエリーを書き、指定した株価に基づいて必要な株価を取得しましたが、新しい株を追加すると、関数内で結果を出力しても株価は更新されません。助言がありますか?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

この行を更新する必要があります。

関連する問題