Pandas`index 0超出轴0的范围,大小为0`

时间:2018-06-16 15:20:13

标签: python pandas

我得到了这个奇怪的错误。我已经修复了很多次,所以我确切地知道它意味着什么:我试图访问的行不存在。

足够公平。

检查文件时,该行存在。这意味着要么我正在加载文件不正确(我怀疑,在这种情况下会抛出错误),或者出现了一些错误。

我使我的词汇量变得很好,我在程序开始时将其初始化。这是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索引进行搜索的方法吗?

0 个答案:

没有答案