具体来说,我使用的是Python2.7。我从Quandl读取并打印了两个数据帧:'FMAC / HPI_AK'和'FMAC / HPI_CA',没有任何问题。我使用merged = pd.merge(df1, df2, on = 'Date', how = 'outer')
来合并两个数据帧。但是当我尝试合并这两个数据帧时,我得到一个追溯说keyerror: 'Date'
,其中'Date'是两个数据帧中第一个/索引列中的属性。
import quandl
import pandas as pd
api_key = open('quandlapikey.txt', 'r').read()
df1 = quandl.get('FMAC/HPI_ak', authtoken=api_key)
df2 = quandl.get('FMAC/HPI_ca', authtoken=api_key)
print(df1.head())
print(df2.head())
merged = pd.merge(df1, df2, on = 'Date', how = 'outer')
merged.set_index('Date', inplace = True)
print(merged)
日期值
1975-01-31 15.671711
1975-02-28 15.726897
1975-03-31 15.919058
1975-04-30 16.233030
1975-05-31 16.494823
日期值
1975-01-31 34.447924
1975-02-28 34.958144
1975-03-31 35.480144
1975-04-30 36.024334
1975-05-31 36.617578
追踪(最近一次呼叫最后一次):
文件“”,第1行,in runfile('/ Users / hans / Desktop / sentdex / buildingdataset.py',wdir ='/ Users / hans / Desktop / sentdex')
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py”,第866行,在runfile中 execfile(filename,namespace)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py”,第94行,在execfile中 builtins.execfile(filename,* where)
文件“/Users/hans/Desktop/sentdex/buildingdataset.py”,第22行,在 merged = pd.merge(df1,df2,on ='Date',how ='outer')
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.py”,第61行,合并 copy = copy,indicator = indicator)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.py”,第543行, init self.join_names)= self._get_merge_keys()
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.py”,第810行,在_get_merge_keys中 right_keys.append(右[RK] ._值)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第2059行, getitem return self._getitem_column(key)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第2066行,在_getitem_column中 return self._get_item_cache(key)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py”,第1386行,在_get_item_cache中 values = self._data.get(item)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py”,第3543行,获取 loc = self.items.get_loc(item)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/indexes/base.py”,第2136行,在get_loc中 return self._engine.get_loc(self._maybe_cast_indexer(key))
文件“pandas / index.pyx”,第132行,在pandas.index.IndexEngine.get_loc(pandas / index.c:4433)
文件“pandas / index.pyx”,第154行,在pandas.index.IndexEngine.get_loc(pandas / index.c:4279)
文件“pandas / src / hashtable_class_helper.pxi”,第732行,pandas.hashtable.PyObjectHashTable.get_item(pandas / hashtable.c:13742)
文件“pandas / src / hashtable_class_helper.pxi”,第740行,pandas.hashtable.PyObjectHashTable.get_item(pandas / hashtable.c:13696)
KeyError:'Date'
答案 0 :(得分:2)
您收到该错误是因为Date
是DataFrames
中的索引而不是列。
你可以做(测试):
merged = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)