我得到了这个奇怪的错误。我已经修复了很多次,所以我确切地知道它意味着什么:我试图访问的行不存在。
足够公平。
检查文件时,该行存在。这意味着要么我正在加载文件不正确(我怀疑,在这种情况下会抛出错误),或者出现了一些错误。
我使我的词汇量变得很好,我在程序开始时将其初始化。这是init:
def __init__(self, vocab_path, training_path):
data = pd.read_csv(training_path, sep='|', escapechar='\\', encoding='utf-8')
self.training_dataset = data.drop(['0'], 1)
self.vocab_path = vocab_path
try:
self.vocab = pd.read_csv(vocab_path, sep='|', encoding='latin-1')
except: # This is to avoid errors when the vocab file does not exist
self.training_to_vocab()
self.vocab = pd.read_csv(vocab_path, sep='|', encoding='latin-1')
这是导致错误的部分:
new_words = []
for n, index_num in enumerate(batch_to_translate): # Batch to translate looks something like this [10,11,3,5,34]
row = self.vocab[self.vocab['index'] == index_num]['word']
try:
new_words.append(row.values[0]) # Right here throws the error
except IndexError as err:
print('->', index_num, '<- This is the index_num',)
print('->', row, '<- This is the row')
print(err)
quit(0)
为什么会这样?初始化时不会抛出任何错误。显然,我稍后会在我的程序中调用training_to_vocab()
(为了避免依赖except
,如果未调用training_to_vocab()
,则词汇表可能没有使用batch_to_words
所需的单词
我不确定这里发生了什么。即使是非常小的index_num
(例如6)也找不到。
这是我的vocabulary.csv
。
index|word
-|hello
-|there
-|this
-|is
-|junk
我想我知道问题是什么。 self.vocab['index'] == index_num
这就是在该列中搜索该数字。因为我的列都是-
,所以它永远找不到它。有人知道使用pandas索引进行搜索的方法吗?