很久以前有一个类似的question,但是当我尝试获取索引时,我会重新打开主题,因为我得到了一个KeyError。
我所拥有的基本上是带有顺序信息的csv:
1 0 0 2 3 0 0 4 0 5
0 0 0 0 0 1 0 2 3 0
每一列都是不同的产品(0只意味着它还没有被购买)我想要的是制作一种链接列表并安排所购买的产品
1 - > 2 - > 3 - > 4等。
我需要这样,因为我需要按照这个特定的顺序对它们进行操作,所以我需要得到索引。
我知道我可以使用嵌套循环来检查每个单元格并创建像这样的链接列表,但它让我烦恼,因为大熊猫给了我这个错误。 据我所知,它没有被弃用,它应该正常工作。 我找不到有人从get_loc()中提到KeyError的地方。
这是我的代码:
def get_current_prods(self,list):
"""This gets the sequence of only the products that are already available and makes a new list with the indexes"""
counter= 1
for i in range(0,self.num_of_fields):
if counter in list.values:
print list.index.get_loc(str(counter))
counter=counter+1
if __name__ == '__main__':
b = bayes_inference()
print b.probs
print b.seq
for row in range(0,b.probs.shape[0]):
list = b.seq.ix[row]
print list
b.get_current_prods(list)
这是堆栈跟踪:
File "/home/kavaev/bayes_inference.py", line 32, in <module>
b.get_current_prods(list)
File "/home/kavaev/bayes_inference.py", line 18, in get_current_prods
print list.index.get_loc(str(counter))
File "/usr/local/lib/python2.7/dist-packages/pandas/indexes/base.py", line 2106, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/index.pyx", line 139, in pandas.index.IndexEngine.get_loc (pandas/index.c:4160)
File "pandas/index.pyx", line 161, in pandas.index.IndexEngine.get_loc (pandas/index.c:4024)
File "pandas/src/hashtable_class_helper.pxi", line 732, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13161)
File "pandas/src/hashtable_class_helper.pxi", line 740, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13115)
KeyError: '1'
答案 0 :(得分:0)
默认情况下,索引不是字符串。如果进行此更改,代码是否有效?
if counter in list.values:
print list.index.get_loc(counter)
P.S。在定义变量时覆盖内置函数(如list
)是不好的做法。现在你没办法把东西转换成列表更难了!