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
相关产品推荐
相关产品推荐

