0

代码:

import numpy as np
import pandas as pd
from datetime import datetime,date,time,timedelta
from nsepy import get_history

stocks = ['JSWSTEEL','RELIANCE','AXISBANK','HCLTECH','TECHM']
start = datetime.today() - timedelta(365)
end = datetime.today()
close_price = pd.DataFrame()

for tickers in stocks:
    close_price[tickers] = get_history(tickers,start,end)

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

ValueError:无法设置没有定义索引的框架和无法转换为系列的值

请帮助我在上面的代码中获取多只股票的信息

谢谢

4

1 回答 1

0

解决方案 1:替换close_price[tickers] = get_history(tickers,start,end)close_price[tickers] = get_history(tickers,start,end)['Close'].


解决方案 2:替换close_price = pd.DataFrame()close_price = {}.


解释:

出现此错误是因为您已将“close_price”定义为数据框,但事实并非如此。作为 get_history 函数,它本身返回一个 pandas DataFrame 所以在下面的行中

close_price[tickers] = get_history(tickers,start,end)

您实际上是在将数据框分配给 close_price 的列。由于二维数据帧(由 get_history 返回)无法转换为系列,因此出现错误。

所以你可以简单地将 close_price 定义为字典而不是数据框

或者

从返回的数据框中提取收盘价系列,从中提取收盘价并将其分配给您定义的数据框(这是您想要做的)。

于 2021-12-10T14:15:19.833 回答