ValueError: 0 is not in range
run the command "python3 run_first_time.py"
.......
984 sh.600917 重庆燃气
985 sh.600918 中泰证券
Traceback (most recent call last):
File "/home/zjp/.local/lib/python3.8/site-packages/pandas/core/indexes/range.py", line 346, in get_loc
return self._range.index(new_key)
ValueError: 0 is not in range
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "run_first_time.py", line 46, in <module>
calculate_stock_spec.calculate_all_spec('sh', 'sh.000001')
File "/home/zjp/workstaging/StockIndicatorAnalyzer/calculate_stock_spec.py", line 58, in calculate_all_spec
daily['relaprice'] = daily['close']/daily['close'][0]
File "/home/zjp/.local/lib/python3.8/site-packages/pandas/core/series.py", line 882, in __getitem__
return self._get_value(key)
File "/home/zjp/.local/lib/python3.8/site-packages/pandas/core/series.py", line 991, in _get_value
loc = self.index.get_loc(label)
File "/home/zjp/.local/lib/python3.8/site-packages/pandas/core/indexes/range.py", line 348, in get_loc
raise KeyError(key) from err
KeyError: 0
Cannot produce here, you can change calculate_stock_spec.py line 171 to sh.600918 and debug calculate_stock_spec.py to check what is wrong with this stock
if name=='main': starttime = datetime.datetime.now() calculate_all_spec('sh.600918', 'sh.000001')
endtime = datetime.datetime.now()
print(endtime - starttime)
你现在数据库已经生成,k线数据也都抓到了,可以运行daily_update.py了,因为你run_first_time.py没有运行完,所以没有生成date.txt,可以手动在同级目录下创建一个date.txt,内容是 2020-08-25
-
- sql_cmd = "SELECT * FROM stock_day_k where code='" + ticker+"' and tradestatus='1' order by date desc limit 0,251"
- daily = pd.read_sql(sql=sql_cmd, con=db)
+
+ sql_cmd_select = "SELECT * FROM stock_day_k where code='" + ticker+"' and tradestatus='1' order by date desc limit 0,251"
+ sql_cmd_delete = 'delete from allstock where code="%s"' % ticker
+ daily = pd.read_sql(sql=sql_cmd_select, con=db)
daily = daily.sort_values(by='date', ascending=True)
daily = daily.reset_index(drop = True)
- daily['relaprice'] = daily['close']/daily['close'][0]
+ try:
+ daily['relaprice'] = daily['close']/daily['close'][0]
+ except Exception as e:
+ db.execute(sql_cmd_delete)
+ continue
relaticker = daily['relaprice']
你现在数据库已经生成,k线数据也都抓到了,可以运行daily_update.py了,因为你run_first_time.py没有运行完,所以没有生成date.txt,可以手动在同级目录下创建一个date.txt,内容是 2020-08-25
thanks for your reply
sql_cmd = "SELECT * FROM stock_day_k where code='" + ticker+"' and tradestatus='1' order by date desc limit 0,251"daily = pd.read_sql(sql=sql_cmd, con=db)
sql_cmd_select = "SELECT * FROM stock_day_k where code='" + ticker+"' and tradestatus='1' order by date desc limit 0,251"sql_cmd_delete = 'delete from allstock where code="%s"' % tickerdaily = pd.read_sql(sql=sql_cmd_select, con=db) daily = daily.sort_values(by='date', ascending=True) daily = daily.reset_index(drop = True)
daily['relaprice'] = daily['close']/daily['close'][0]
try:daily['relaprice'] = daily['close']/daily['close'][0]except Exception as e:db.execute(sql_cmd_delete)continue relaticker = daily['relaprice']
最好还是看一看这个股票的数据有什么问题