Python 从雅虎财经下载数据时,在股票代码中加上破折号或圆点

Python 从雅虎财经下载数据时,在股票代码中加上破折号或圆点,python,pandas,yahoo-finance,Python,Pandas,Yahoo Finance,我有以下代码从yahoo下载数据: #gets data from yahoo finance stocks = list(newmerge.index) start = dt.datetime(2012,1,1) end = dt.datetime.today() yahoodata = pdr.get_data_yahoo(stocks,start,end) cleanData = yahoodata.loc['Adj Close'] dataFrame = pd.DataFrame(cl

我有以下代码从yahoo下载数据:

#gets data from yahoo finance
stocks = list(newmerge.index)
start = dt.datetime(2012,1,1)
end = dt.datetime.today()

yahoodata = pdr.get_data_yahoo(stocks,start,end)
cleanData = yahoodata.loc['Adj Close']
dataFrame = pd.DataFrame(cleanData, columns=stocks)
它工作正常,但我最近注意到一个问题,它没有下载股票“BRK.B”和“BR.B”的数据

我有一个名为“股票”的所有股票的列表,下面是我所做的,但它仍然没有显示股票中w/dot的数据:

def stocksdot(stocks):
stocks_dash = str(stocks).replace('.','-')
stockslist = stocks_dash.split(',')
return stockslist

stocksdot(stocks)

我的预期输出是下载所有股票,甚至是那些有点的股票。有什么办法可以规避吗?

你的问题是雅虎财经没有使用“.”符号来跟踪不同类别的股票。所以,“BRK.B”和“BR.B”实际上是“BRKB”和“BRB”

使用Yahoo Finance python,我制作了一个小脚本来测试Yahoo Finance是否可以找到股票代码为“BRK.B”或“BR.B”的股票信息

这一结果是:

>>>> None
带有点的股票行情器被用作特定股票类型或类别的速记。你可以学到更多

要避免这种情况,您可以删除“.”。例如,当我使用“BRKB”而不是“BRK.B”时,我得到的结果是:

>>>> 173.05
这是伯克希尔哈撒韦B类股票的当前价格

要以编程方式替换“.”,请使用Python的.replace()方法


你的问题是Yahoo Finance没有使用“.”符号来跟踪不同类别的股票。所以,“BRK.B”和“BR.B”实际上是“BRKB”和“BRB”——我的评论:现在“BRK.B”和“BR.B”实际上是“BRK-B”和“BR-B”。

请提供一个完整的工作列表,以便帮助您更容易。谢谢,这似乎是可行的,但我的库存在列表中,它说替换不能在列表中使用。请查看我的编辑。您只需要遍历列表中的每只股票,并对单个股票调用replace。如果回答了您的问题,请投票并标记为已接受。
>>>> 173.05
for stock in stocks:
    stock = stock.replace(".", "")  # Replaces all "." with "" in the string 
                                # stock