StockIndicatorAnalyzer icon indicating copy to clipboard operation
StockIndicatorAnalyzer copied to clipboard

ValueError: 0 is not in range

Open zhao-newname opened this issue 5 years ago • 5 comments

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

zhao-newname avatar Aug 26 '20 03:08 zhao-newname

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)

mmdfish avatar Aug 26 '20 12:08 mmdfish

你现在数据库已经生成,k线数据也都抓到了,可以运行daily_update.py了,因为你run_first_time.py没有运行完,所以没有生成date.txt,可以手动在同级目录下创建一个date.txt,内容是 2020-08-25

mmdfish avatar Aug 26 '20 14:08 mmdfish

-        
-        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']

zhao-newname avatar Aug 27 '20 01:08 zhao-newname

你现在数据库已经生成,k线数据也都抓到了,可以运行daily_update.py了,因为你run_first_time.py没有运行完,所以没有生成date.txt,可以手动在同级目录下创建一个date.txt,内容是 2020-08-25

thanks for your reply

zhao-newname avatar Aug 27 '20 02:08 zhao-newname

  •    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']
    

最好还是看一看这个股票的数据有什么问题

mmdfish avatar Aug 27 '20 02:08 mmdfish