无法向 pandas DataFrame 添加值

Posted

技术标签:

【中文标题】无法向 pandas DataFrame 添加值【英文标题】:Unable to add values to a pandas DataFrame 【发布时间】:2020-12-31 21:45:33 【问题描述】:

我正在尝试查找一些股票的 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()
  

谁能告诉我我的错误在哪里以及如何解决这个错误。谢谢

【问题讨论】:

哪一行给出了这个错误? macd=df.ta.macd() 【参考方案1】:

df=df.merge(macd, on="Date")

【讨论】:

【参考方案2】:

我不确定是哪一行给了你这个错误。

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

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)

【讨论】:

我试过了,但我得到了同样的错误。错误在 macd=df.ta.macd() 行中 我对 macd() 函数不熟悉。但也可以试试:macd = df['ta'].macd()

以上是关于无法向 pandas DataFrame 添加值的主要内容,如果未能解决你的问题,请参考以下文章

向 Pandas DataFrame 箱线图添加图例

Python Pandas 向DataFrame中添加一行/一列

如何在 pandas DataFrame 中以衰减速率前向填充 NaN 值

pandas DataFrame-向量化运算

pandas使用pad函数向dataframe特定数据列的每个字符串添加前置(前缀)补齐字符或者字符串向所有字符串的左侧填充直到宽度达到指定要求(left padding)

当列是现有列的布尔测试时,为啥向 Pandas DataFrame 添加列会返回 SettingWithCopy 警告?