无法将值添加到Pandas DataFrame

问题描述

我正在尝试找到一些股票的MACD(移动平均收敛散度)。我正在使用Pandas_ta,yfinance和pandas库。但是,当我尝试将Macd值添加到数据帧时,出现此错误

IndexError: iloc cannot enlarge its target object

我的代码是:

import pandas as pd 
import pandas_ta as ta
import yfinance as yf
import datetime as dt
import matplotlib.pyplot as plt
start=dt.datetime.today()-dt.timedelta(365)
end=dt.datetime.today()
zscore=pd.DataFrame()
rsi=pd.DataFrame()
tickers=['2060.SR','2160.SR','3002.SR','4007.SR','3005.SR','3004.SR','2150.SR']
macd=pd.DataFrame()
for i in tickers:
  df=pd.DataFrame(yf.download(i,start=start,end=end,interval="1mo"))

  df.columns = map(str.lower,df.columns)    
  macd=df.ta.macd()
  

有人可以让我知道我的错误在哪里以及如何解决错误。谢谢

解决方法

我不确定哪一行会给您这个错误。

但是请注意,在循环中您不是在添加数据,而是一次又一次地重写数据:

for i in tickers:
  df=pd.DataFrame(yf.download(i,start=start,end=end,interval="1mo"))

如果要追加,请执行以下操作:

agg_df = pd.DataFrame()
for i in tickers:
  df=pd.DataFrame(yf.download(i,interval="1mo"))
  agg_df = agg_df.append(df)
,

df = df.merge(macd,on =“ Date”)