Pandas创建价格>500且车身类型为sedan的DataFrame时报TypeError错误
报错原因
这个TypeError的核心是DataFrame的price列当前为字符串(str)类型,Python不支持直接对字符串和整数做>大小比较运算。
解决步骤
- 先验证
price列的数据类型,执行如下代码确认:print(df['price'].dtype)
如果输出结果为object,即可确认该列是字符串类型。 - 将
price列转换为数值类型,若列中存在无法转为数值的脏数据,可添加errors='coerce'参数将异常值转为空值NaN,转换代码如下:df['price'] = pd.to_numeric(df['price'], errors='coerce') - 类型转换完成后再运行你原来的筛选代码即可正常执行,若不需要修改原DataFrame的列类型,也可以在筛选时临时做类型转换,完整筛选代码如下:
newdd = df[(df['body-style'] == 'sedan') & (pd.to_numeric(df['price'], errors='coerce') > 500)]
可选优化
如果要排除转换后产生的空值行,可以额外添加空值过滤条件:
newdd = df[ (df['body-style'] == 'sedan') & (pd.to_numeric(df['price'], errors='coerce') > 500) & (pd.to_numeric(df['price'], errors='coerce').notna()) ]
内容的提问来源于stack exchange,提问作者Ammar Abu Zainah
相关产品推荐
相关产品推荐

