使用DataFrame遇TypeError: '>'不支持str与int比较,如何解决?
问题解决思路
要不要转成NumPy数组?
完全没必要。Pandas DataFrame在表格数据处理上比纯NumPy数组更灵活,自带的索引、列名、缺失值处理等特性都是优势,继续用DF就好。
解决DF中比较操作的类型错误
你遇到的问题核心是列的数值转换没有真正生效,不是DF本身不支持>这类比较。按以下步骤排查修复:
- 先确认列的实际类型:执行
print(df.dtypes),看目标列是不是int64/float64类型。如果还是object,说明之前的转换没成功。 - 用更稳健的方法转换数值:别直接用
astype(int),改用pd.to_numeric()处理,它能自动识别非数字内容并处理:# 把目标列转成数值,无法转换的设为NaN df['你的列名'] = pd.to_numeric(df['你的列名'], errors='coerce') - 处理转换后的缺失值:如果有NaN(因为原数据里有非数字内容),可以选择删除或填充:
# 删除含NaN的行 df = df.dropna(subset=['你的列名']) # 或者把NaN填充为0后转成int df['你的列名'] = df['你的列名'].fillna(0).astype(int) - 确认转换完成后再执行比较:比如
筛选结果 = df[df['你的列名'] > 100],这时候就不会出现类型不匹配的报错了。
另外注意:如果是两个列之间的比较,要确保两个列都完成了正确的数值转换,不能只转其中一个。
内容的提问来源于stack exchange,提问作者Iris Rodriguez
相关产品推荐
相关产品推荐

