我创建了一个从YahooFinancials返回历史价格的类。 但我在尝试重新使用函数get_ticker()时遇到了一些问题,因为它会导致except语句。来自雅虎的数据如下所示:
无法找出get\u ticker方法失败的原因。我的预期结果是,它应该返回一个数据帧,列名称为ticker,值为收盘价
{'NDA-SE.ST': {'eventsData': {'dividends': {'2019-03-24': {'amount': 0.69,
'date': 1553846400,
'formatted_date': '2019-03-29'}}},
'firstTradeDate': {'formatted_date': '2018-10-03', 'date': 1538550000},
'currency': 'SEK',
'instrumentType': 'EQUITY',
'timeZone': {'gmtOffset': 7200},
'prices': [{'date': 1538344800,
'high': 96.54000091552734,
'low': 90.91000366210938,
'open': 95.58000183105469,
'close': 91.81999969482422,
'volume': 27927817,
'adjclose': 91.02266693115234,
'formatted_date': '2018-09-30'},
{'date': 1538949600,
'high': 92.0999984741211,
'low': 86.70999908447266,
'open': 91.8499984741211,
'close': 86.70999908447266,
'volume': 55435408,
'adjclose': 85.95703887939453,
'formatted_date': '2018-10-07'}
from yahoofinancials import YahooFinancials
import pandas as pd
class Data(object):
"""docstring for ClassName"""
def __init__(self,ticker, start, end,basis):
self.ticker = ticker
self.basis = basis
self.start = start
self.end = end
def get_histocial_prices(self):
ticker = self.ticker
yahoo_financials = YahooFinancials(ticker)
return yahoo_financials.get_historical_price_data(self.start, self.end, self.basis)
def get_ticker(self, DATAFRAME):
'''Gets historical DATA from a TICKER and given range, and then appends it to
a DATAFRAME'''
DATAFRAME = pd.DataFrame()
hist_price = Data.get_histocial_prices(self)
'''returns a returns a dict '''
sample = hist_price
'''Puts sample in Dataframe under each TICKER'''
try:
self.ticker = pd.DataFrame.from_dict(data=sample['prices'],orient='index')
cols = ['close']
self.ticker = self.ticker[cols]
self.ticker = self.ticker.rename(columns={'close':self.ticker})
if DATAFRAME.empty == True:
DATAFRAME = DATAFRAME.append(self.ticker)
print('First column')
DATAFRAME.head()
return DATAFRAME
elif self.ticker in DATAFRAME:
print(self.ticker, 'already in dataframe')
return DATAFRAME
else:
DATAFRAME = pd.concat((DATAFRAME, self.ticker), axis=1, ignore_index=True, sort=True)
print('Added:', self.ticker)
return DATAFRAME
except:
print('NO DATA IN RANGE', self.ticker)
return DATAFRAME
d = Data('NDA-SE.ST','2018-08-15', '2018-09-15', 'daily')
d.get_ticker('df')
目前没有回答
相关问题 更多 >
编程相关推荐