3つのデータフレームをマージしようとしています。 dfのうち2つは「国」を使用し、3つ目は「国名」を使用します。編集*画像はSciEnとエネルギーのためのものです。3つのデータフレームをパンダでマージする際にキーエラーが発生する
誰かが私の主なエラーがどこにあるか私が把握助けることができますか? 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'
最初のマージからの出力を見てください。 'res = pd.merge(SciEm、energy、how = 'inner'、on = 'Country')'そこに "Country"列はありますか?マージ後に "Country_x"と "Country_y"に変換されたのでしょうか? – DataSwede
マージの2番目の部分を取り出して、あなたが持っているコードだけを残すと、コードは機能しません。エネルギーファイルの国は何か変なことをしていると思いますが、何が分からないのでしょうか? –
'print energy.columns'と' Print SciEm.columns'の両方のカラム名をより近くに表示します。時には、列名に後ろに空白文字があるか、大文字が異なるか、見逃しやすいものがあります。 SciEmの場合 – DataSwede