Python 数据帧中的对象值的KeyError
有人能解释为什么“路易斯维尔”会返回一个键错误吗?据我所知,这是在数据框架内。我错过了什么 下面是数据的样子。这是一个CSV 这就是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尝试:
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()