I tried to do performa some transformation with dataset from yfinance in Colab. But the transformation kept failing with following error: ValueError: Cannot set a DataFrame with multiple columns to the single column target_5
One confusing part is, this code works perfect in local jupyter environment, but Colab seems to differ in handling the shift()function...?
stock_symbol = "QQQ"
today=datetime.today().strftime('%Y-%m-%d')
# Download training data (2020 - 2024)
train_start = "2018-01-01"
train_end = "2024-09-01"
train_data = yf.download(stock_symbol, start=train_start, end=train_end, interval="1d")
# Download test data (2025)
test_start = "2024-09-01" # Ensure at least 50 prior days for rolling windows
test_end = datetime.today().strftime("%Y-%m-%d")
test_data = yf.download(stock_symbol, start=test_start, end=test_end, interval="1d")
for data in [train_data, test_data]:
data["daily_change_%"] = data["Close"].pct_change() * 100
data["curday_change_%"] = (data["Close"] - data["Open"]) / data["Open"] * 100
data["shift_5"]=data["Close"].shift(-5)
data["shift_10"]=data["Close"].shift(-10)
data["shift_20"]=data["Close"].shift(-20)
data["target_5"] = ((data["shift_5"] - data["Close"]) / data["Close"]) * 100
data["target_10"] = ((data["shift_10"] - data["Close"]) / data["Close"]) * 100
data["target_20"] = ((data["shift_20"] - data["Close"]) / data["Close"]) * 100
data["target"]=(data["target_20"]>0).astype(int)
i check the shift columns, they are series...