如何从 Quandl join/merge 两个数据帧?
How to join/merge two data frames from Quandl?
具体来说,我使用Python2.7。我从 Quandl 读取并打印了两个数据帧:'FMAC/HPI_AK' 和 'FMAC/HPI_CA' 分别没有问题。我使用 merged = pd.merge(df1, df2, on = 'Date', how = 'outer')
来合并两个数据框。但是当我试图合并这两个数据框时,我得到一个回溯说 keyerror: 'Date'
其中 'Date' 是两个数据框中 first/index 列中的属性。
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 行,在运行文件中
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 行,位于
合并 = 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 行,在 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]._values)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第 2059 行,在 getitem 中
return self._getitem_column(键)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第 2066 行,在 _getitem_column
return 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
return self._engine.get_loc(self._maybe_cast_indexer(键))
文件 "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)
按键错误:'Date'
您收到该错误是因为 Date
是那些 DataFrames
中的索引,而不是列。
您可以改为执行(已测试):
merged = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)
具体来说,我使用Python2.7。我从 Quandl 读取并打印了两个数据帧:'FMAC/HPI_AK' 和 'FMAC/HPI_CA' 分别没有问题。我使用 merged = pd.merge(df1, df2, on = 'Date', how = 'outer')
来合并两个数据框。但是当我试图合并这两个数据框时,我得到一个回溯说 keyerror: 'Date'
其中 'Date' 是两个数据框中 first/index 列中的属性。
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 行,在运行文件中 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 行,位于 合并 = 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 行,在 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]._values)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第 2059 行,在 getitem 中 return self._getitem_column(键)
文件“/Users/hans/anaconda2/lib/python2.7/site-packages/pandas/core/frame.py”,第 2066 行,在 _getitem_column return 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 return self._engine.get_loc(self._maybe_cast_indexer(键))
文件 "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)
按键错误:'Date'
您收到该错误是因为 Date
是那些 DataFrames
中的索引,而不是列。
您可以改为执行(已测试):
merged = pd.merge(df1, df2, how='outer', left_index=True, right_index=True)