2016-11-27 10 views
0

3つのデータフレームをマージしようとしています。 dfのうち2つは「国」を使用し、3つ目は「国名」を使用します。編集*画像はSciEnとエネルギーのためのものです。3つのデータフレームをパンダでマージする際にキーエラーが発生する

ScimEn

energy

誰かが私の主なエラーがどこにあるか私が把握助けることができますか? energy.csvファイルで 'Country'と関係があるとわかっていますが、なぜエラーがあるのか​​分かりません。

コード:

import pandas as pd 
import numpy as np 
energy = pd.read_csv('Energy Indicators.csv') 
GDP = pd.read_csv('world_bank_new.csv') 
columns_to_keep = ['Country Name','Country Code','Indicator Name','Indicator Code', 
        '2006','2007','2008','2009','2010','2011','2012','2013','2014','2015'] 
GDP = GDP[columns_to_keep] 
SciEm = pd.read_csv('scimagojr-3.csv',encoding = "ISO-8859-1") 



res = pd.merge(SciEm,energy,how='inner',on='Country').merge(GDP,how='inner',left_on='Country',right_on='Country Name').set_index('Country Name') 
res.index.name = None 

return pd.DataFrame(res,columns=dfcolumns).head(15) 

エラー:私はコメントで示唆されているようにあなただけの、リターンにこれを置くことができる

KeyError         Traceback (most recent call last) 
/opt/conda/lib/python3.5/site-packages/pandas/indexes/base.py in get_loc(self, key, method, tolerance) 
    1944    try: 
-> 1945     return self._engine.get_loc(key) 
    1946    except KeyError: 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4154)() 

pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12368)() 

pandas/hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12322)() 

KeyError: 'Country' 
+1

最初のマージからの出力を見てください。 'res = pd.merge(SciEm、energy、how = 'inner'、on = 'Country')'そこに "Country"列はありますか?マージ後に "Country_x"と "Country_y"に変換されたのでしょうか? – DataSwede

+0

マージの2番目の部分を取り出して、あなたが持っているコードだけを残すと、コードは機能しません。エネルギーファイルの国は何か変なことをしていると思いますが、何が分からないのでしょうか? –

+0

'print energy.columns'と' Print SciEm.columns'の両方のカラム名をより近くに表示します。時には、列名に後ろに空白文字があるか、大文字が異なるか、見逃しやすいものがあります。 SciEmの場合 – DataSwede

答えて

0

return SciEm.merge(GDP, how='left', left_on='Country', right_on='Country Name').merge(energy, how='left', left_on='Country', right_on='Country').drop('Country Name', axis=1).set_index('Country').head(15) 
+0

これは動作しません。それでもキーエラーがあります。 –

+0

あなたは適切な方法でファイルを読んでいないことがありますか?マージしているファイルの印刷画面を送信できますか? – zipa

+0

イメージをオリジナルに追加しました。 –

0

エラーが元にありました。 CSVファイル。私は誤ってそれを.txtとして保存しました。

しかし、奇妙なことは、ファイルのイメージが.txtのように見えなかったことです。それはまだ.csvのように見えました。

関連する問題