Python 数据帧中的对象值的KeyError

Python 数据帧中的对象值的KeyError,python,pandas,dataframe,keyerror,Python,Pandas,Dataframe,Keyerror,有人能解释为什么“路易斯维尔”会返回一个键错误吗?据我所知,这是在数据框架内。我错过了什么 下面是数据的样子。这是一个CSV 这就是off\u data.head()的外观 off\u data.index() off\u数据列 Rajith Thennakoon的建议 输入 输出 KeyError回溯(最近的呼叫 最后)~\Anaconda3\lib\site packages\pandas\core\index\base.py in 获取位置(自身、键、方法、公差)2896尝试:

有人能解释为什么“路易斯维尔”会返回一个键错误吗?据我所知,这是在数据框架内。我错过了什么

下面是数据的样子。这是一个CSV

这就是
off\u data.head()
的外观

off\u data.index()

off\u数据列

Rajith Thennakoon的建议

输入

输出 KeyError回溯(最近的呼叫 最后)~\Anaconda3\lib\site packages\pandas\core\index\base.py in 获取位置(自身、键、方法、公差)2896尝试: ->2897返回自身引擎。获取锁定(钥匙)2898,钥匙错误除外:

pandas中的pandas\libs\index.pyx.\u libs.index.IndexEngine.get\u loc()

pandas中的pandas\libs\index.pyx.\u libs.index.IndexEngine.get\u loc()

pandas\u libs\hashtable\u class\u helper.pxi位于 pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\u libs\hashtable\u class\u helper.pxi位于 pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError:“路易斯维尔”

在处理上述异常期间,发生了另一个异常:

KeyError回溯(最近的呼叫 最后)在 4. 5类型(关闭数据) ---->6 off_data.loc[“路易斯维尔”,0]

中的~\Anaconda3\lib\site packages\pandas\core\index.py getitem(self,key)1416除了(keyrerror,indexer,AttributeError):1417通过 ->1418返回自我。_getitem_tuple(键)1419 else:1420#根据定义,我们只有第0个轴

中的~\Anaconda3\lib\site packages\pandas\core\index.py _getitem_元组(self,tup) 803 def_getitem_元组(self,tup): 804尝试: -->805返回自我。\u getitem\u lowerdim(tup) 806除索引错误外: 807通行证

中的~\Anaconda3\lib\site packages\pandas\core\index.py _getitem_lowerdim(自我,tup) 927对于i,输入枚举(tup): 928如果类似于标签(键)或isinstance(键,元组): -->929节=自。\获取项目\轴(键,轴=i) 930 我们得到了一个标量

中的~\Anaconda3\lib\site packages\pandas\core\index.py _getitem_轴(自身,键,轴)1848#通过直接查找1849自身。_验证_键(键,轴) ->1850返回自我。获取标签(键,轴=轴)1851 1852

中的~\Anaconda3\lib\site packages\pandas\core\index.py _获取标签(自身、标签、轴) 158 raise IndexingError(“此处无切片,别处处理”) 159 -->160返回自身对象(标签,轴=轴) 161 162 def_get_loc(自身,键:int,轴:int):

xs中的~\Anaconda3\lib\site packages\pandas\core\generic.py(self,key, 轴、标高、下降标高)3735 loc,新的标高索引= self.index.get_loc_level(key,drop_level=drop_level)3736
其他: ->3737 loc=自索引。如果存在(loc,np.ndarray),则获取_loc(键)3738 3739:

中的~\Anaconda3\lib\site packages\pandas\core\index\base.py get_loc(自身、键、方法、公差)2897返回 自行发动机。获取位置(钥匙)2898`


您可以通过以下方式获取行:

off_data.loc[off_data['Team'] == "Louisville"]
您进行定位的方式需要列名,根据您的输出,列名似乎是Team,您可以尝试以下方法以查看它们是否有效:

In [4496]: df2.loc[0,"Team"]                                                                                                                                                   
Out[4496]: 'Michigan'

In [4497]: df2.loc[1,"Team"]                                                                                                                                                   
Out[4497]: 'Louisville'
看起来数据中有空白,下面是一种快速去除结尾空白的方法:

off_data.index = off_data.index.str.strip()
这将允许您按原样进行搜索:

off_data[off_data.index == 'Louisville']
试试这个

off_data.index = off_data.index.str.strip()
off_data.loc[off_data.index == "Louisville"]
编辑

如果在读取数据帧时需要删除空格,则可以使用。这将跳过分隔符后的空格。

df1 = pd.read_csv(.. skipinitialspace=True)
或者需要删除特定列的空格,可以这样使用

df["column_name"] = df["column_name"].str.strip()
或者你也可以用熊猫或者其他动物

lstrip,从左侧删除序列/索引中每个字符串的空白(包括换行符)或一组指定字符


rstrip、从右侧删除序列/索引中每个字符串的空白(包括换行符)或一组指定字符。

您能否清除错误消息,以便仅显示KeyError和其他“error”类型?请尝试此
off_data.loc[0,“Louisville”]
0应该代表什么?@rajithennakoon如果他们将“团队”作为索引,那么这就没有意义了。在您读入df以及off_data.index和off_数据后,我们可以看到它的样子。columns@westcollins嗯,你能提供一个“off_data[0:2].to_dict()”吗要检查吗?刚刚添加在其他图片下它看起来像是团队和Conf合并了,如果你能把它作为包含在`````中的文本放入dict值中,我可能会读入它并计算出来,我知道这是否是你想要的我看到一个问题,你的团队名称中有一个空格:“Louisville”影响搜索。你可以在这里做一些事情,我会把它们贴在上面,我在上面添加了你建议的图片。我想前导空格和尾随空格是问题所在。检查更新的答案非常感谢。问题只是尾随空格:/。你有没有办法去掉尾随空格,而不把_数据转换成索引?@westcollins检查一下详细的答案,我想它会回答你上面提到的问题
off_data.index = off_data.index.str.strip()
off_data.loc[off_data.index == "Louisville"]
df1 = pd.read_csv(.. skipinitialspace=True)
df["column_name"] = df["column_name"].str.strip()