3 개의 데이터 프레임을 병합하려고합니다. df의 두 개는 '국가'를 사용하고 세 번째는 '국가 이름'을 사용합니다. 편집 * 이미지는 SciEn 및 에너지를위한 것입니다.3 개의 데이터 프레임을 팬더와 병합하는 동안 키 오류가 발생했습니다
은 누군가가 내 키 오류 위치를 알아내는 데 도움이 수 있습니까? energy.csv 파일에서 '국가'와 관련이 있다는 것을 알고 있지만 왜 오류가 있는지 이해할 수 없습니다.
코드 :
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_x"와 "Country_y"로 변형되었을 것입니까? – DataSwede
병합의 두 번째 부분을 제거하고 보유한 코드 만 남겨두면 코드가 작동하지 않습니다. 그래서 저는 에너지 파일에있는 국가가 이상한 일을하고 있다고 생각합니다. 그러나 나는 무엇을 알아 내지 못합니다. –
근접 인쇄하기 :'print energy.columns'와'Print SciEm.columns' 둘 다의 열 이름을 출력하십시오. 때로는 열 이름 뒤에 공백 문자 또는 다른 대문자 또는 다른 쉽게 놓칠 수있는 뭔가가 있습니다. SciEm를 들어 – DataSwede