如何加入/合并来自 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 的两个数据框?的主要内容,如果未能解决你的问题,请参考以下文章

连接/加入/合并两个缺少一列的数据框

如何基于两列组合两个数据框? [复制]

加入/合并两个 Pandas 数据框并将列用作多索引

合并两个具有多索引的数据框

列出两列时合并两个 Pandas 数据框

如果来自一列的数据存在于另一列中,则合并两个数据框