如何从Quandl加入/合并两个数据框?

时间:2017-04-15 00:07:41

标签: python-2.7 join merge quandl

具体来说,我使用的是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'

1 个答案:

答案 0 :(得分:2)

您收到该错误是因为DateDataFrames中的索引而不是列。

你可以做(​​测试):

merged = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)