Search code examples
pythonpandasdataframestockyfinance

How to add price column to dataframe based on date column already present in yahooquery?


The following code is being used to create the output below it:

from yahooquery import Ticker

# Fetching data for AAPL
aapl = Ticker('AAPL')
types = ['asOfDate', 'TangibleBookValue', 'ShareIssued']
financial_data = aapl.get_financial_data(types, trailing=False)

# Dropping specific columns
columns_to_exclude = ['periodType', 'currencyCode']
financial_data.drop(columns=columns_to_exclude, inplace=True)
print(financial_data)

Output:

enter image description here

I would like to add an additional column from the history module that grabs the adjclose price based on the corresponding asOfDate. So the output should be:

enter image description here

Below is sample code that grabs price history data with the output below it:

tickers = Ticker('aapl', asynchronous=True)

# Default period = ytd, interval = 1d
df = tickers.history(start='2019-01-01', end='2023-12-31')
df.head()

enter image description here


Solution

  • Here you go:

    financial_data = financial_data.reset_index()
    df = df.reset_index()
    df['date'] = pd.to_datetime(df['date'], format='Y-%m-%d')
    financial_data = pd.merge(left=financial_data, right=df[['date','adjclose']], left_on='asOfDate', right_on='date', how='outer')
    financial_data
    
      symbol   asOfDate   ShareIssued  TangibleBookValue       date    adjclose
    0   AAPL 2020-09-30  1.697676e+10       6.533900e+10 2020-09-30  113.604172
    1   AAPL 2021-09-30  1.642679e+10       6.309000e+10 2021-09-30  139.697617
    2   AAPL 2022-09-30  1.594342e+10       5.067200e+10 2022-09-30  137.204224
    3   AAPL 2023-09-30  1.555006e+10       6.214600e+10        NaT         NaN