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

DataFrame筛选时出现str与int比较错误,求解决方法

解决DataFrame筛选时的类型错误问题

嘿,我一眼就瞅出问题出在哪了,咱们来快速搞定它!

错误根源

你写的筛选语句movie2007to16=movie1[movie1['title_year'>2006]]里,括号的位置完全错啦!你其实是在把字符串'title_year'和整数2006做比较,而不是拿movie1['title_year']这一列的数值去和2006比,这就触发了str和int不能用>比较的类型错误。

修正后的完整流程

你之前处理title_year列的代码是没问题的:

import pandas as pd
import numpy as np

# 你的原数据处理代码(逻辑正确)
movie1['title_year'] = pd.to_numeric(movie1['title_year'], errors='coerce').fillna(0).astype(np.int8)

接下来只需要修正筛选语句的括号位置,用正确的布尔索引来筛选:

# 正确的筛选方式:先取列,再做数值比较
movie2007to16 = movie1[movie1['title_year'] > 2006]

如果你想让代码更清晰规范,也可以用loc方法(推荐在复杂筛选场景下使用):

movie2007to16 = movie1.loc[movie1['title_year'] > 2006, :]

验证结果

你可以运行下面的代码确认筛选是否符合预期:

# 查看新DataFrame的年份范围
print("最小年份:", movie2007to16['title_year'].min())
print("最大年份:", movie2007to16['title_year'].max())
# 检查是否还有被替换的0值(应该被完全排除)
print("是否包含0值:", (movie2007to16['title_year'] == 0).any())

这样就能得到你想要的、包含2007年及以后记录的新DataFrame啦!

内容的提问来源于stack exchange,提问作者Vikrant Arora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:33:42