Python KeyError:所有索引都不在[columns]中,不确定如何继续

Python KeyError:所有索引都不在[columns]中,不确定如何继续,python,pandas,dataframe,key,keyerror,Python,Pandas,Dataframe,Key,Keyerror,我试图返回数据帧中满足两个条件的所有行 第一个条件很好。第二个条件(我尝试使用nlargest(10)根据前10个分数返回行)给出了以下错误: File "/Users/[extracted]/Desktop/imdbnew.py", line 21, in <module> comedy_high = IMDB[IMDB['Score'].nlargest(10)] File "/Library/Frameworks/Python.framework/Versions

我试图返回数据帧中满足两个条件的所有行

第一个条件很好。第二个条件(我尝试使用nlargest(10)根据前10个分数返回行)给出了以下错误:

 File "/Users/[extracted]/Desktop/imdbnew.py", line 21, in <module>
    comedy_high = IMDB[IMDB['Score'].nlargest(10)]
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/frame.py", line 2806, in __getitem__
    indexer = self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1]
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py", line 1552, in _get_listlike_indexer
    self._validate_read_indexer(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/indexing.py", line 1640, in _validate_read_indexer
    raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Float64Index([9.6, 9.4, 9.4, 9.4, 9.4, 9.3, 9.2, 9.1, 9.1, 9.0], dtype='float64')] are in the [columns]"
但是,如果我尝试只打印出前10个分数,而不从数据框返回与之对应的行,我会得到一个结果:

comedy_high = IMDB['Score'].nlargest(10)
结果如下:

9603    9.6
1645    9.4
3914    9.4
5482    9.4
5979    9.4
0       9.3
9       9.2
5428    9.1
6891    9.1
1       9.0
Name: Score, dtype: float64

这真的让我很沮丧,有人能帮忙吗?我是一个新手程序员;我一直在阅读其他类似的问题,并测试提供的答案,但无法找到解决方案。我真的很感激你的帮助

我能够通过以下代码找到解决问题的方法:

comedy_df = IMDB[(IMDB['Genre'].str.contains("Comedy"))]
comedy = pandas.DataFrame(comedy_df)
comedy_high = comedy.sort_values('Score', ascending=False).head(10)
print(comedy_high)

正如Ankur在评论中提到的,我无法使用.nlargest()来过滤数据帧。取而代之的是,我根据我所研究的类型创建了一个过滤版本的原始数据帧,按降序对分数进行排序,并使用.head()获得前n个值

这可能是因为这两条语句返回的内容不同
.str.contains()
返回一个包含布尔值的pandas系列对象(与原始数据帧具有相同的行数)——这可用于筛选
.nlargest()
返回一个pandas Series对象,其中包含可变行数和任意数据类型的值(在您的示例中为float)——这不能用于筛选。感谢Ankur指出这一点!我能够利用这些信息采取不同的方法,并且能够找到问题的解决方案。
comedy_df = IMDB[(IMDB['Genre'].str.contains("Comedy"))]
comedy = pandas.DataFrame(comedy_df)
comedy_high = comedy.sort_values('Score', ascending=False).head(10)
print(comedy_high)