2017-05-05 4 views
0

私はパンダのデータフレームを持っており、辞書に各acct_id_adj番号を追加して、そのIDに関連付けられたすべての電話番号をノートで検索しようとしています。 ID = PhNum [ 'acct_id_adj'] [I]で:辞書に割り当てる "KeyError:2L"に実行

Example of the dataframe 
Index RowNum acct_id_adj NOTE_DT NOTE_TXT 
0  1 A20000000113301111  5/2/2017 t/5042222222 lm w/ 3rd jn 
1  2 A20000000038002222  5/4/2017  OB CallLeft Message 
3  4 A20000000107303333  5/4/2017 8211116411 FOR $18490 MLF 


import pandas 
import re 
PhNum = pandas.read_csv('C:/PhoneNumberSearch.csv') 
PhNum = PhNum[PhNum['NOTE_TXT'].notnull()] 

D = {} 
#for i in xrange(PhNum.shape[0]): 
for i in xrange(3): 
    ID = PhNum['acct_id_adj'][i] 
    Note = re.sub(r'\W+', ' ', PhNum['NOTE_TXT'][i]) 
    print(Note) 
    Numbers = [int(s) for s in Note.split() if s.isdigit()] 
    print(Numbers) 
    for j in xrange(len(Numbers)): 
     if Numbers[j] > 1000000000: 
      D[ID] = Numbers[j] 

print(D) 

Out = pandas.DataFrame(D.items(), columns=['acct_id_adj', 'Phone_Number']) 

しかしながら、第三の行で私はエラー "2L KeyError例外" に実行し続けます。良い文書を見つけることができず、なぜ問題が発生するまで待つのか理解できません。

私は、このエラーの原因になっている可能性があるかどうか、または私が間違った方法で辞書について考えていることを私に伝えてくれて助かりました。

+0

完全なトレースバックを投稿してください。 –

+1

PhNum ['acct_id_adj'] [2] 'を探しているのかもしれませんが、インデックス番号の2番目の数字が索引に入っていますか?私はあなたの行に0,1,3という番号が付けられていることに気づいたので、間違っているかもしれません。 – bouteillebleu

答えて

1

分析:csvファイルがある

場合:

とても、pandas.read_csvは、例えば、インデックスとして最初の列を使用する場合は、あなたのPhoneNumberSearch.csvファイルは、不正な形式であると思われます

Index,RowNum,acct_id_adj,NOTE_DT,NOTE_TXT 
0,1,A20000000113301111,5/2/2017,t/5042222222 lm w/ 3rd jn, 
1,2,A20000000038002222,5/4/2017,OB CallLeft Message, 
3,4,A20000000107303333,5/4/2017,8211116411 FOR $18490 MLF, 

PhNumは次のようになります。

Index RowNum acct_id_adj NOTE_DT NOTE_TXT 
0 1 A20000000113301111 5/2/2017 t/5042222222 lm w/ 3rd jn NaN 
1 2 A20000000038002222 5/4/2017 OB CallLeft Message NaN 
3 4 A20000000107303333 5/4/2017 8211116411 FOR $18490 MLF NaN 

ご覧のとおり、indexは2ですが、3であるため、ID = PhNum['acct_id_adj'][2]はエラーを発生させます。

ソリューション:

あなたがpandasを強制的にindex_col=Falseないofficial docを参照して、インデックスとして最初の列を使用し検討するかもしれない何ができるか:

PhNum = pandas.read_csv('C:/PhoneNumberSearch.csv',index_col=False) 

PhNumが得られますあなたは正しいとindex

Index RowNum acct_id_adj NOTE_DT NOTE_TXT 
0 0 1 A20000000113301111 5/2/2017 t/5042222222 lm w/ 3rd jn 
1 1 2 A20000000038002222 5/4/2017 OB CallLeft Message 
2 3 4 A20000000107303333 5/4/2017 8211116411 FOR $18490 MLF 
+1

私は実際にはインデックスを必要としませんが、このようなトラブルシューティングの目的でインデックスを持っていることがあります。インデックスをリセットしただけでキーエラーが修正されました。 PhNum = PhNum [PhNum ['NOTE_TXT']。notnull()]。reset_index() – JJFord3

関連する問題