我有一个代码列表 ( tickerStrings
),我必须一次全部下载。当我尝试使用 Pandas 的 read_csv
时,它不会像我从 yfinance 下载数据时那样读取 CSV 文件。
我通常通过 ticker 访问我的数据,如下所示: data['AAPL']
或 data['AAPL'].Close
,但是当我从 CSV 文件中读取数据时,它不允许我这样做。
if path.exists(data_file):
data = pd.read_csv(data_file, low_memory=False)
data = pd.DataFrame(data)
print(data.head())
else:
data = yf.download(tickerStrings, group_by="Ticker", period=prd, interval=intv)
data.to_csv(data_file)
这是打印输出:
Unnamed: 0 OLN OLN.1 OLN.2 OLN.3 ... W.1 W.2 W.3 W.4 W.5
0 NaN Open High Low Close ... High Low Close Adj Close Volume
1 Datetime NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
2 2020-06-25 09:30:00-04:00 11.1899995803833 11.220000267028809 11.010000228881836 11.079999923706055 ... 201.2899932861328 197.3000030517578 197.36000061035156 197.36000061035156 112156
3 2020-06-25 09:45:00-04:00 11.130000114440918 11.260000228881836 11.100000381469727 11.15999984741211 ... 200.48570251464844 196.47999572753906 199.74000549316406 199.74000549316406 83943
4 2020-06-25 10:00:00-04:00 11.170000076293945 11.220000267028809 11.119999885559082 11.170000076293945 ... 200.49000549316406 198.19000244140625 200.4149932861328 200.4149932861328 88771
尝试访问数据时出现的错误:
Traceback (most recent call last):
File "getdata.py", line 49, in processData
avg = data[x].Close.mean()
AttributeError: 'Series' object has no attribute 'Close'
原文由 timbibbs 发布,翻译遵循 CC BY-SA 4.0 许可协议
将所有代码下载到具有单级列标题的单个数据框中
选项1
选项 2
group_by='Ticker'
将代码放在列名称的level=0
读
yfinance
csv已经存储了多级列名tickerStrings
是一个代码列表,它导致最终数据框具有多级列名将多级列展平为一个级别并添加代码列
level=0
(顶部)group_by='Ticker'
level=1
(底部)下载每个代码并将其保存到单独的文件中
data
看起来像读入上一节保存的多个文件并创建一个数据框