如何连接/合并来自Quandl的两个数据帧?

问题描述:

具体而言,我使用Python2.7。我从Quandl读取并打印两个数据帧:“FMAC/HPI_AK”和“FMAC/HPI_CA”,分别没有问题。我使用merged = pd.merge(df1, df2, on = 'Date', how = 'outer')来合并两个数据帧。但是当我试图合并这两个数据帧时,我得到一个回溯说keyerror: 'Date'其中'Date'是两个数据帧中第一个/索引列中的属性。如何连接/合并来自Quandl的两个数据帧?

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年1月31日15.671711

1975年2月28日15.726897

1975年3月31日15.919058

1975年4月30日16.233030

1975-05-31 16.494823

日期值
1975年1月31日34.447924

1975年2月28日34.958144

1975年3月31日35.480144

1975年4月30日36.024334

1975年5月31日36.617578

回溯(最近通话最后一个):

文件 “”,1号线,在 runfile('/ Users/hans/Desktop/sentdex/buildingdataset.py',wdir ='/ Users/hans/Desktop/sentdex')

“/Users/hans/anaconda2/lib/python2.7/site -packages/Spyder的/ utils的/网站/ sitecustomize.py “线路866,在RUNFILE 的execfile(文件名,命名空间)

文件” /Users/hans/anaconda2/lib/python2.7/site-packages/spyder /utils/site/sitecustomize.py”,线94,在的execfile builtins.execfile(文件名,*其中)

文件 “/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行,在合并 副本=拷贝,指示器=指示器)

文件 “/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.py”,线路543,在初始化 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(right [rk] ._ values)

文件 “/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,线2059,在的GetItem 回报self._getitem_column(键)

文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame。PY”,线路2066,在_getitem_column 回报self._get_item_cache(键)

文件 “/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py”,行1386在_get_item_cache 值= self._data.get(项目)

文件 “/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/internals.py”,线3543,在得到 LOC = self.items.get_loc(项目)

文件 “/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))

文件 “熊猫/ index.pyx”,线路132,在pandas.index.IndexEngine.get_loc(熊猫/ index.c:4433)

文件 “熊猫/ index.pyx”,线路154,在pandas.index.IndexEngine.get_loc(熊猫/ index.c:4279)

文件 “熊猫/ SRC/hashtable_class_helper.pxi”,线路732,在pandas.hashtable.PyObjectHashTable.get_item(熊猫/ hashtable.c:13742 )

文件 “熊猫/ SRC/hashtable_class_helper.pxi”,线路740,在pandas.hashtable.PyObjectHashTable.get_item(熊猫/ hashtable.c:13696)

KeyError异常:“日期”

你得到错误,因为Date是在那些DataFrames不是列的索引。

可以代替做(测试):

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

太谢谢你了! – Hanshenry90

+0

非常欢迎! – bernie