有人可以解释为什么“路易斯维尔”返回键错误吗?据我了解,它在数据框中。我想念什么?
这是数据的样子。这是CSV。
这是off_data.head()
的样子
off_data.index()
off_data.columns
off_data[0:2].to_dict()
Rajith Thennakoon的建议
{'Conf': {'Michigan St. ': 'B10', 'Louisville ': 'ACC'},
'AdjTempo': {'Michigan St. ': 70.4, 'Louisville ': 67.8},
'AdjOE': {'Michigan St. ': 114.4, 'Louisville ': 113.9},
'eFG%': {'Michigan St. ': 52.9, 'Louisville ': 60.7},
'TO%': {'Michigan St. ': 15.9, 'Louisville ': 17.1},
'OR%': {'Michigan St. ': 37.1, 'Louisville ': 32.8},
'FTRate': {'Michigan St. ': 30.9, 'Louisville ': 32.5},
'AdjDE': {'Michigan St. ': 85.1, 'Louisville ': 87.5},
'deFG%': {'Michigan St. ': 40.3, 'Louisville ': 42.9},
'dTO%': {'Michigan St. ': 20.7, 'Louisville ': 15.9},
'dOR%': {'Michigan St. ': 25.0, 'Louisville ': 27.6},
'dFTRate': {'Michigan St. ': 27.3, 'Louisville ': 26.0}}
输入
import pandas as pd
off_data = pd.read_csv(r'C:\Users\westc\Desktop\sports.data\ncaab\kenpomdata\off20.csv', index_col= 'Team')
type(off_data)
off_data.loc["Louisville",0]
KeyError跟踪(最近的呼叫 最后)〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py在 get_loc(self,key,method,tolerance)2896试试: -> 2897返回self._engine.get_loc(key)2898,除了KeyError:
pandas._libs.index.IndexEngine.get_loc()中的pandas_libs \ index.pyx
pandas._libs.index.IndexEngine.get_loc()中的pandas_libs \ index.pyx
pandas_libs \ hashtable_class_helper.pxi在 pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas_libs \ hashtable_class_helper.pxi在 pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError:“路易斯维尔”
在处理上述异常期间,发生了另一个异常:
KeyError跟踪(最近的呼叫 最后) 4 5种(off_data) ----> 6 off_data.loc [“路易斯维尔”,0]
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py在 getitem ((自身,密钥))1416除了(KeyError,IndexError,AttributeError):1417通过 -> 1418返回self._getitem_tuple(key)1419否则:1420#根据定义,我们只有第0个轴
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py在 _getitem_tuple(自我,tup) 803 def _getitem_tuple(self,tup): 804尝试: -> 805返回self._getitem_lowerdim(tup) 806除了IndexingError: 807通过
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py在 _getitem_lowerdim(自我,tup) 927 for i,输入enumerate(tup): 第928章真相大白(四更) -> 929节= self._getitem_axis(key,axis = i) 930 931#我们产生了一个标量?
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py在 _getitem_axis(self,key,axis)1848#直查找1849 self._validate_key(key,axis) -> 1850返回self._get_label(键,轴=轴)1851 1852
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py在 _get_label(自我,标签,轴) 158提高IndexingError(“这里没有切片,在其他地方处理”) 159 -> 160返回self.obj._xs(label,axis = axis) 161 162 def _get_loc(self,key:int,axis:int):
〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ generic.py in xs(self,key, 轴,水平,drop_level)3735 loc,new_index = self.index.get_loc_level(key,drop_level = drop_level)3736
其他: -> 3737 loc = self.index.get_loc(key)3738 3739 if isinstance(loc,np.ndarray):〜\ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py在 get_loc(self,key,method,tolerance)2897返回 self._engine.get_loc(key)2898`
答案 0 :(得分:1)
您可以通过以下方式获取行:
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']
答案 1 :(得分:1)
尝试
off_data.index = off_data.index.str.strip()
off_data.loc[off_data.index == "Louisville"]
编辑
如果在读取数据框时需要删除空格,则可以使用skipinitialspace=True。这将在定界符后跳过空格。
df1 = pd.read_csv(.. skipinitialspace=True)
或者需要删除特定列的空格,可以这样使用
df["column_name"] = df["column_name"].str.strip()
lstrip,Strip空格(包括换行符)或“系列/索引”中每个字符串左侧的一组指定字符。
rstrip,Strip空格(包括换行符)或来自系列/索引中每个字符串的右侧的一组指定字符。