繁体   English   中英

如何修复 Python 中的 KeyError: (1, 0)?

[英]How can I fix this KeyError: (1, 0) in Python?

我的代码如下:

stats = ['ETT', 'EMT', 'MRR', 'MMR', 'EER', 'ATT', 'MMT' ,'EMM' ,'ERT' ,'AER' ,'AEE' ,'AMM' ,'EEM' ,'ART' ,'AAR' ,'AEM' ,'MRT','AAT','AMR','ARR','AMT','RTT','EMR','ERR','EET','RRT','AET','MTT','AAE','AAM','EEE','TTT',
'AAA','MMM','RRR']


def determine_rewards(number_of_look_up_table,current_row_index,action_index):
if stats[number_of_look_up_table][current_row_index] == 'T' :
    reward = rewards[0,action_index]
elif stats[number_of_look_up_table][current_row_index] == 'M' :
    reward = rewards[1,action_index]
elif stats[number_of_look_up_table][current_row_index] == 'E' :
    reward = rewards[2,action_index]   
elif stats[number_of_look_up_table][current_row_index] == 'R' :
    reward = rewards[3,action_index] 
elif stats[number_of_look_up_table][current_row_index] == 'A' :
    reward = rewards[4,action_index]    
return reward   

reward = determine_rewards(2,0,0)

'rewards' 是一个 5 行 20 列的矩阵,里面有数字。'determine_rewards' function 使用奖励和统计矩阵中的输入和值分配一个值。 当我调用 function 'determine_rewards' 时,它给了我以下错误。 请帮我解决这个错误

reward = determine_rewards(2,0,0)


KeyError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, 
tolerance)
 2656             try:
-> 2657                 return self._engine.get_loc(key)
 2658             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: (1, 0)

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_28528/3264022016.py in <module>
----> 1 reward = determine_rewards(2,0,0)

~\AppData\Local\Temp/ipykernel_28528/255015173.py in 
determine_rewards(number_of_look_up_table, current_row_index, action_index)
 20         reward = rewards[0,action_index]
 21     elif stats[number_of_look_up_table][current_row_index] == 'M' :
 ---> 22         reward = rewards[1,action_index]
      23     elif stats[number_of_look_up_table][current_row_index] == 'E' :
      24         reward = rewards[2,action_index]

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2925             if self.columns.nlevels > 1:
2926                 return self._getitem_multilevel(key)
-> 2927             indexer = self.columns.get_loc(key)
   2928             if is_integer(indexer):
   2929                 indexer = [indexer]

  ~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, 
  tolerance)
  2657                 return self._engine.get_loc(key)
  2658             except KeyError:
  -> 2659                 return self._engine.get_loc(self._maybe_cast_indexer(key))
  2660         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
  2661         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: (1, 0)

检查缩进

另外我相信也许你搞砸了你的方括号?:

rewards[0,action_index]  -> rewards[0][action_index]

对所有情况做同样的事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM