Pandas 0.20.3“KeyError:'[1 2] not in index'”尝试选择要在 DataFrame 中显示的列时 [重复]

Posted

技术标签:

【中文标题】Pandas 0.20.3“KeyError:\'[1 2] not in index\'”尝试选择要在 DataFrame 中显示的列时 [重复]【英文标题】:Pandas 0.20.3 "KeyError: '[1 2] not in index'" When Trying to Select Columns to Display in DataFrame [duplicate]Pandas 0.20.3“KeyError:'[1 2] not in index'”尝试选择要在 DataFrame 中显示的列时 [重复] 【发布时间】:2018-05-15 04:45:26 【问题描述】:

我正在阅读Mastering Pandas for Finance一书,并为 S&P 500 创建了以下 DataFrame:

    sp500 = pd.read_csv("sp500.csv", index='Symbol', usecols=[0, 2, 3, 7])

返回以下数据帧:

S&P 500 DataFrame

练习的一部分是使用以下代码显示仅选择列的数据框:

            $ sp500[[1, 2]].head(3)

这应该产生以下DataFrame:

S&P 500 DataFrame with Indexed Columns Only

运行代码时出现以下错误:

    KeyError: '[1 2] not in index'

追溯

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-67-9993ec8d3122> in <module>()
----> 1 sp500[[1, 2]].head(3)

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in __getitem__(self, key)
   1956         if isinstance(key, (Series, np.ndarray, Index, list)):
   1957             # either boolean or fancy integer index
-> 1958             return self._getitem_array(key)
   1959         elif isinstance(key, DataFrame):
   1960             return self._getitem_frame(key)

~/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _getitem_array(self, key)
   2000             return self.take(indexer, axis=0, convert=False)
   2001         else:
-> 2002             indexer = self.loc._convert_to_indexer(key, axis=1)
   2003             return self.take(indexer, axis=1, convert=True)
   2004 

~/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1229                 mask = check == -1
   1230                 if mask.any():
-> 1231                     raise KeyError('%s not in index' % objarr[mask])
   1232 
   1233                 return _values_from_object(indexer)

KeyError: '[1 2] not in index'

【问题讨论】:

【参考方案1】:

从图片上看,sp500 的列名是sectorpricebook value。所以 pandas 抱怨是因为你在问名为 12 的列。

sp500[sp500.columns[[1,2]]] 会给你第二列和第三列,我认为这就是你所追求的。

【讨论】:

以上是关于Pandas 0.20.3“KeyError:'[1 2] not in index'”尝试选择要在 DataFrame 中显示的列时 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Spyder 中打开数据帧时出现 KeyError('pandas._libs.interval')

pandas提示“Keyerror”

使用 Pandas 访问 csv 文件时出现 KeyError

错误:pandas hashtable keyerror

Pandas Python:KeyError 日期

Pandas - KeyError: '[] not in index' 训练 Keras 模型时