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



具体来说,我使用Python2.7。我分别阅读并打印了Quandl的两个数据框:"FMAC/HPI_AK"和"FMAC/HPI_CA",没有问题。 我使用merged = pd.merge(df1, df2, on = 'Date', how = 'outer')来合并两个数据框。但是当我尝试合并两个数据框时,我得到一个回溯,说keyerror: '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 行,在 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 行,在运行文件中 可执行文件(文件名,命名空间)

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

文件 "/Users/hans/Desktop/sentdex/buildingdataset.py",第 22 行,在 merge = 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 行,在initself.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 行,在getitemreturn self._getitem_column(key) 中

文件 "/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 行,在 get loc = self.items.get_loc(项)

文件 "/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/indexes/base.py",第 2136 行,第 get_loc 行 返回 self._engine.get_loc(self._maybe_cast_indexer(key))

文件 "pandas/index.pyx", 第 132 行, in pandas.index.IndexEngine.get_loc (pandas/index.c:4433)

文件 "pandas/index.pyx", 第 154 行, in 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, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13696)

密钥错误:"日期">

您收到该错误是因为Date是这些DataFrames中的索引而不是列。

您可以改为执行(经过测试):

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

最新更新