You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

筛选烂番茄评分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)

错误分析

  1. 语法逻辑错误:df.sort_values(by=['Rotten Tomatoes'] ['rating'==100])这一行写法完全错误:
    • 'rating'==100是布尔表达式,结果为False,用它去索引列表['Rotten Tomatoes']会导致无效操作,进而产生NaN
    • rating是你定义的文件名变量,并非数据列名,应该用Rotten Tomatoes列来做判断
  2. 操作逻辑错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:32:26