无法向pandas DataFrame添加值



我正在为一些股票寻找MACD(移动平均收敛发散(。我正在使用Pandas_ta、yfnance和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, start=start, end=end, interval="1mo"))
agg_df = agg_df.append(df)

df=df.merge(macd,on="日期">

我过去使用过df.append(row),自从pandas 1.4之后就不推荐使用了。对我来说,最合乎逻辑的方法是:df.loc[len(df)] = ['list', 'of', 'elements'] # len(df.columns)

此处提供了其他方法:https://sparkbyexamples.com/pandas/how-to-append-row-to-pandas-dataframe/

相关内容

  • 没有找到相关文章

最新更新