筛选烂番茄评分100分的电影:代码返回NaN问题求助
解决烂番茄100分电影筛选返回NaN的问题
问题背景
需要从MovieRatings.csv数据集中筛选出烂番茄评分为100的电影列表,但现有代码执行后返回NaN。
原代码
import pandas as pd rating = 'MovieRatings.csv' data_set=pd.read_csv(r'C:\Users\Korisnik\Documents\dssvol03python\dss03python2023\session02\_data\MovieRatings.csv') df=pd.DataFrame(data_set,columns=['FILM','Rotten Tomatoes']) print(df) rt=df.sort_values(by=['Rotten Tomatoes'] ['rating'==100]) display(rt)
错误分析
- 语法逻辑错误:
df.sort_values(by=['Rotten Tomatoes'] ['rating'==100])这一行写法完全错误:'rating'==100是布尔表达式,结果为False,用它去索引列表['Rotten Tomatoes']会导致无效操作,进而产生NaNrating是你定义的文件名变量,并非数据列名,应该用Rotten Tomatoes列来做判断
- 操作逻辑错误:
sort_values是排序函数,无法直接筛选数据,需要先做布尔筛选再排序(或直接筛选)
修正后的代码
import pandas as pd # 读取数据集 data_set = pd.read_csv(r'C:\Users\Korisnik\Documents\dssvol03python\dss03python2023\session02\_data\MovieRatings.csv') # 选择目标列(直接用列索引更简洁) df = data_set[['FILM', 'Rotten Tomatoes']] # 筛选烂番茄评分为100的电影 rt_100 = df[df['Rotten Tomatoes'] == 100] # 输出结果 print(rt_100) display(rt_100)
额外说明
- 如果需要对筛选结果排序(虽然都是100分,排序无实际差异),可以在筛选后添加:
rt_100_sorted = rt_100.sort_values(by='Rotten Tomatoes', ascending=False) - 若
Rotten Tomatoes列是字符串类型,需要先转为数值型再筛选:df['Rotten Tomatoes'] = pd.to_numeric(df['Rotten Tomatoes'], errors='coerce')
内容的提问来源于stack exchange,提问作者MashaF
相关产品推荐
相关产品推荐

