Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么数据帧不更新?_Python_Pandas_Class_Dataframe - Fatal编程技术网

Python 为什么数据帧不更新?

Python 为什么数据帧不更新?,python,pandas,class,dataframe,Python,Pandas,Class,Dataframe,我有一个portfolio类,我想创建一个AddStockShares函数来检查一只股票是否存在,如果存在,它会将股票的数量添加到现有的股票中,或者抛出一个例外。我使用iloc编写了一个查询,以便根据给定的股票代码获得我想要的股票价值,但当我添加新股票时,股票数据框不会更新,即使我在函数中打印结果时,它是正确的。有什么建议吗 import numpy as np import pandas as pd class Portfolio(object): """description of cla

我有一个portfolio类,我想创建一个AddStockShares函数来检查一只股票是否存在,如果存在,它会将股票的数量添加到现有的股票中,或者抛出一个例外。我使用iloc编写了一个查询,以便根据给定的股票代码获得我想要的股票价值,但当我添加新股票时,股票数据框不会更新,即使我在函数中打印结果时,它是正确的。有什么建议吗

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)
将numpy导入为np
作为pd进口熊猫
类别组合(对象):
“”“类的说明”“”
股票价格数组=[]
数组\u的\u股票\u名称=[]
数组\u的\u共享=[]
stocks=pd.DataFrame(np.column_stack([array_of_stock_price,array_of_stock_name,array_of_shares]))
定义初始化(自):
打印()
def AddStock(self、股票代码、股票价格、股数):
如果股票代码在股票名称的self.array中:
raise VALUE ERROR('报价器已存在')
其他:
self.array\u of\u stock\u names.append(stock\u ticker)
self.array\u of\u stock\u prices.append(stock\u prices)

如果(num_shares您需要更新该行

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

“检查股票是否存在,如果存在,则添加股票数量”您的代码是相反的,仅在股票不存在时添加,如果股票已经存在则引发错误。决定要添加哪一种股票。如果股票存在还是不存在,是否要追加?