So I have made a class that takes in a ticker symbol, and it returns a dataframe with all the price information for the dates specified. here is the code below:
import pandas as pd
import numpy as np
import pandas_datareader as pdr
# class to get stock price
class GetStockInfo():
'''
Class to retrieve stock info and returns it as a dataframe
'''
def __init__(self, ticker):
self.ticker = ticker.upper()
def build_df(self, start_date, end_date):
df = pd.DataFrame(pdr.DataReader(self.ticker, 'yahoo', start_date, end_date))
return df
now this works perfectly, but ideally id like to pass in a list of symbols and have it return a seperate df for each symbol. so for example,
symbols = ['aapl','googl','msft','tsla']
and id like it to return 4 seperate dfs, each named aapl_df
, msft_df
etc. is there any way to do this?
ive tried using a for loop like so
for i in symbols:
stock = GetStockInfo(i)
i_df = stock.build_df('2019-01-01', '2020-01-01')
but im not sure how to get it to return seperate dfs.
Advertisement
Answer
As I commented, you can also do something like this:
Edit:
I guess you don’t need to __init__
at all
class GetStockInfo():
'''
Class to retrieve stock info and returns it as a dataframe
'''
def __init__(self):
pass
def build_df(self, stock, start_date, end_date):
df = pd.DataFrame(pdr.DataReader(stock.upper(), 'yahoo', start_date, end_date))
return df
def build_multiple(self,symbols,start_dates,end_dates):
result = {}
for i in range(len(symbols)):
result[symbols[i]] = self.build_df(symbols[i],start_dates[i],end_dates[i])
return result
Also, I think your question more about how to access those dfs like you mentioned aapl_df,msft_df...
?
You can just do results['aapl']
instead of writing aapl_df
– and so on.