问题描述
因此,我正在尝试为标准普尔中的每个公司创建数据框。这是到目前为止的代码:
import pandas as pd
import pandas_datareader as web
import datetime as dt
from datetime import date
import numpy as np
data = []
#Get the asset data
def get_data():
start = dt.datetime(2020,9,30)
end = date.today()
csv_file = pd.read_csv(os.path.expanduser("/Users/benitocano/Downloads/copyOfSandP500.csv"),delimiter = ',')
tickers = pd.read_csv("/Users/benitocano/Downloads/copyOfSandP500.csv",delimiter=',',names = ['Symbol','Name','Sector'])
for i in tickers['Symbol'][0:100]:
df = web.DataReader(i,'yahoo',start,end)
df.drop(['High','Low','Open','Close','Volume'],axis=1,inplace=True)
data.append(df)
当我索引前100家或以上的公司时,该代码将正常工作。我得到的错误是:KeyError: 'Date'
。我认为这是因为标准普尔500指数中增加了一家新公司而引起的。但是我找不到没有至少3个月数据的新公司。为什么会发生此错误?
谢谢!
完整错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self,key,method,tolerance)
2645 try:
-> 2646 return self._engine.get_loc(key)
2647 except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'
During handling of the above exception,another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-100-b1ba6beb8cbb> in <module>
31 # non_stationary.append(i)
32
---> 33 get_data()
34 # ADF_test()
35
<ipython-input-100-b1ba6beb8cbb> in get_data()
16 tickers = pd.read_csv("/Users/benitocano/Downloads/copyOfSandP500.csv",'Sector'])
17 for i in tickers['Symbol'][0:100]:
---> 18 df = web.DataReader(i,end)
19 df.drop(['High',inplace=True)
20 data.append(df)
~/opt/anaconda3/lib/python3.8/site-packages/pandas/util/_decorators.py in wrapper(*args,**kwargs)
212 else:
213 kwargs[new_arg_name] = new_arg_value
--> 214 return func(*args,**kwargs)
215
216 return cast(F,wrapper)
~/opt/anaconda3/lib/python3.8/site-packages/pandas_datareader/data.py in DataReader(name,data_source,end,retry_count,pause,session,api_key)
374
375 if data_source == "yahoo":
--> 376 return YahooDailyReader(
377 symbols=name,378 start=start,~/opt/anaconda3/lib/python3.8/site-packages/pandas_datareader/base.py in read(self)
251 # If a single symbol,(e.g.,'GOOG')
252 if isinstance(self.symbols,(string_types,int)):
--> 253 df = self._read_one_data(self.url,params=self._get_params(self.symbols))
254 # Or multiple symbols,['GOOG','AAPL','MSFT'])
255 elif isinstance(self.symbols,DataFrame):
~/opt/anaconda3/lib/python3.8/site-packages/pandas_datareader/yahoo/daily.py in _read_one_data(self,url,params)
163 prices = DataFrame(data["prices"])
164 prices.columns = [col.capitalize() for col in prices.columns]
--> 165 prices["Date"] = to_datetime(to_datetime(prices["Date"],unit="s").dt.date)
166
167 if "Data" in prices.columns:
~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self,key)
2798 if self.columns.nlevels > 1:
2799 return self._getitem_multilevel(key)
-> 2800 indexer = self.columns.get_loc(key)
2801 if is_integer(indexer):
2802 indexer = [indexer]
~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self,tolerance)
2646 return self._engine.get_loc(key)
2647 except KeyError:
-> 2648 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649 indexer = self.get_indexer([key],method=method,tolerance=tolerance)
2650 if indexer.ndim > 1 or indexer.size > 1:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)