如何加入/合并来自 Quandl 的两个数据框?
Posted
技术标签:
【中文标题】如何加入/合并来自 Quandl 的两个数据框?【英文标题】:How to join/merge two data frames from Quandl? 【发布时间】:2017-09-11 06:11:09 【问题描述】:具体来说,我使用的是 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
Traceback(最近一次调用最后一次):
文件“”,第 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 行,在运行文件中 execfile(文件名,命名空间)
文件“/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 行,在 合并 = pd.merge(df1, df2, on = 'Date', how = 'outer')
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/tools/merge.py”,第 61 行,合并 复制=复制,指标=指标)
init 中的文件“/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)
getitem 中的文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第 2059 行 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 行,在 get 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: '日期'
【问题讨论】:
【参考方案1】:您收到该错误是因为 Date
是那些 DataFrames
中的索引而不是列。
您可以改为(已测试):
merged = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)
【讨论】:
非常感谢!以上是关于如何加入/合并来自 Quandl 的两个数据框?的主要内容,如果未能解决你的问题,请参考以下文章