Python Loop[ Today Stock Data

Viewed 53

I am trying to combine all stock single-day data with custom TA.

Below are my code, but when I tried to append it. I got an error.

TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid

import pandas as pd
import pandas_ta as ta
import yfinance as yf

stocks = pd.read_csv('stock_list.csv')
# stock list data
# Ticker
# AAPL
# MSFT

increased_symbol = []

for stock in stocks['Ticker']:
    daily_data = pd.DataFrame()
    daily_data = daily_data.ta.ticker(stock, start="2020-01-01", end="2021-09-30")
    daily_data.ta.stochrsi(append=True)
    daily_data = daily_data.iloc[-1:]
    increased_symbol = daily_data.append(stock)

print(increased_symbol)

I hope someone can assist me. BR

1 Answers

I think you need:

L = ['AAPL', 'MSFT']

increased_symbol = []

for stock in L:
    daily_data = pd.DataFrame()
    daily_data = daily_data.ta.ticker(stock, start="2020-01-01", end="2021-09-30")
    daily_data.ta.stochrsi(append=True)
    daily_data = daily_data.iloc[-1:]
    #append dataframes to list
    increased_symbol.append(daily_data)

#concat list of DataFrames
df = pd.concat(increased_symbol)
print(df)
                  Open        High         Low       Close    Volume  \
Date                                                                   
2021-09-29  142.470001  144.449997  142.029999  142.830002  74602000   
2021-09-29  285.100006  286.769989  283.010010  284.000000  26353700   

            Dividends  Stock Splits  STOCHRSIk_14_14_3_3  STOCHRSId_14_14_3_3  
Date                                                                           
2021-09-29        0.0           0.0            18.203772            22.490302  
2021-09-29        0.0           0.0             0.839166            13.396303  

If need also ticker in column:

L = ['AAPL', 'MSFT']

increased_symbol = []

for stock in L:
    daily_data = pd.DataFrame()
    daily_data = daily_data.ta.ticker(stock, start="2020-01-01", end="2021-09-30")
    daily_data.ta.stochrsi(append=True)
    daily_data = daily_data.iloc[-1:]
    increased_symbol.append(daily_data.assign(ticker=stock))


df = pd.concat(increased_symbol)
print(df)

                  Open        High         Low       Close    Volume  \
Date                                                                   
2021-09-29  142.470001  144.449997  142.029999  142.830002  74602000   
2021-09-29  285.100006  286.769989  283.010010  284.000000  26353700   

            Dividends  Stock Splits  STOCHRSIk_14_14_3_3  STOCHRSId_14_14_3_3  \
Date                                                                            
2021-09-29        0.0           0.0            18.203772            22.490302   
2021-09-29        0.0           0.0             0.839166            13.396303   

           ticker  
Date               
2021-09-29   AAPL  
2021-09-29   MSFT  
Related