Pandas KeyError('%s不在索引'%objarr [mask])对我而言,而不是其他具有相同代码的人

时间:2018-03-08 06:17:40

标签: python pandas anaconda spyder

我得到了这个错误,我的教授没有得到,运行他为我们班级提供的相同的示例代码。我在这里或在Anaconda或Python Tutor列表中找不到解决方案。

我们正在学习基本的python,查看最简单的Pandas DataFrames并学习选择列。我们构建了一个数据帧df(5行,5列),除了一行代码之外的所有代码都可以正常工作。无效的路线是:

df[ [0,1] ]

在我的系统上,它不断地在df[ [0,1] ]命令上抛出此KeyError。我收到了df[ [0] ]df[ [1] ]的类似错误。

Traceback (most recent call last):

  File "<ipython-input-7-c392a914e584>", line 1, in <module>
    df[ [0,1] ]

  File "C:\Users\xxxx\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py", line 1958, in __getitem__
    return self._getitem_array(key)

  File "C:\Users\xxxx\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py", line 2002, in _getitem_array
    indexer = self.loc._convert_to_indexer(key, axis=1)

  File "C:\Users\xxxx\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py", line 1231, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])

KeyError: '[0 1] not in index'

我觉得我的计算机上安装了Python的方式。我在64位Win 7 Pro下安装了Anaconda Navigator 1.7.0。我已经多次重启了Anaconda和Sypder,并在很多天内重启了很多次。同样的错误。我今天更新了Anaconda。同样的错误。我通过anaconda导航器或直接从开始菜单运行spyder - 同样的错误。正如我之前提到的,我的教授在运行相同的代码时没有问题。

有没有人对这件事在我的电脑上工作的错误提出任何建议?我的代码示例包括我能在我的机器上执行的其他一些列选择,所以我认为DataFrame一般都在工作。

我注意到的一件事是,由于PC的设置方式,我的路径很长。我想知道这是不是问题的一部分。

示例代码 - 来自教授,适用于他,除了最后一行之外的所有代码也适用于我。

#%%

import pandas

#%% data frame from dictionary

raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
        'last_name': ['Miller', 'Jacobson', ".", 'Milner', 'Cooze'],
        'age': [42, 52, 36, 24, 73],
        'preTestScore': [4, 24, 31, ".", "."],
        'postTestScore': [25, 94, 57, 62, 70]}


df = pandas.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])

df

#%% select the 'first_name' column

b =df['first_name']

b.tolist()

#%% select multiple columns

df[ ['first_name', 'last_name'] ]


#%% select the first 2 columns (by column index - FAILS FOR ME)
# (THIS IS THE LINE THAT THROWS THE ERROR LISTED ABOVE)

df[ [0,1] ]

我尝试过的其他代码 - 这些也可以。

#%% prove that the columns are there

print(df.columns)

#%% select multiple columns by column name

b = df[ ['first_name', 'last_name'] ]

print(b)

#%% select same columns by sub-setting column list

c = df[ df.columns[0:2] ]

print(c)

有关如何解决此问题的任何想法?我可以提供哪些其他信息来帮助您?提前谢谢。

1 个答案:

答案 0 :(得分:0)

检查两台机器中的pandas版本。

import pandas as pd
pd.__version__