2016-12-06 7 views
0

同じようなものがありましたが、インデックスを取得しようとしたときにKeyErrorが発生するので、トピックを再度開きます。 (0はちょうどそれがまだ買っていないことを意味します)と私がしたいことは、ソートのを作ることですラベルが存在するインデックスを取得しようとしたときにKeyErrorを取得する(パンダ)

1 0 0 2 3 0 0 4 0 5 
0 0 0 0 0 1 0 2 3 0 

各列が異なる製品がある:私が持っているもの

は基本的に、順次情報をCSV形式でありますリンクリストとは次のように買った製品を手配し、この

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

私はあなたが問題に答えるのに十分な新しい情報を5つ持っているかどうかはわかりません。各行は何を表していますか?正しいデータフレームがどのように表示されるかを出力することをお勧めします。 –

答えて

0

インデックスは、デフォルトでは、文字列ではありません。この変更を行った場合、コードは機能しますか?

if counter in list.values: 
    print list.index.get_loc(counter) 

P.変数を定義するときは、listのような組み込み関数を上書きするのは悪い習慣です。今あなたは方法がありません何かをリストに変換することはより困難です!

関連する問題