2017-06-21 8 views
1

データフレームdfから、IDsのキーのリストに一致する行を選択しようとしています。まれにpandas DataFrame KeyError:不足しているキーのリストを取得

df.loc[IDs] 

は、それらのキーは、データフレームに含まれていないとKeyError例外がスローされます。

KeyError: "None of [['001U000001c6OczIAE' '001U000000fgVR9IAM' '0015800000ecNcjAAE'\n '001U000000fgVRDIA2']] are in the [index]" 

は、私は簡単にその例外から鍵を行方不明のリストを取得することはできますか?例外処理によってこれをやっていないほうがよいでしょうか?

答えて

1

これ以上の情報がなければ、ステップを忘れてしまったように見えます。あなたのインデックスをSalesforce IDに設定しましたか?例えば

(ランダムデータ):インデックスを設定した後

df 
    a account 
0 1  abc 
1 3  abc 
2 5  abc 
3 7  def 
4 7  def 
5 34  gf 
6 3  hj 
7 24  hj 

lis = ['abc', 'hj'] 
df.loc[lis] 
KeyError: "None of [['abc', 'hj']] are in the [index]" 

lis = ['abc', 'hj', 'j'] 
df.set_index('account').loc[lis] 
      a 
account  
abc  1.0 
abc  3.0 
abc  5.0 
hj  3.0 
hj  24.0 
j   NaN 

代替方法:

df.set_index('account').loc[lis] 
      a 
account  
abc  1 
abc  3 
abc  5 
hj  3 
hj  24 

欠落値は、むしろnp.nan値はエラーをスローしてはなりません変更なし。index

df.loc[df['account'].isin(lis), :] 
+0

私はインデックスを正しく設定すると思います。「index_col = ...」を 'pandas.read_csv'に渡します。 – clstaudt

+0

' df.head() 'の出力は何ですか?インデックスに重複はありますか? –

+0

データフレームを表示できませんが、予期せずインデックスに重複があります。なぜその列をインデックスにしようとすると苦情はありませんか? – clstaudt

関連する問題