如何转换Pandas数据类型并筛选Quality≤4的数据?
问题解决
一、Quality列的类型转换方法
当然可以转换Quality列的类型,Pandas提供了两种实用方案:
- 强制类型转换(适合确定列内所有内容均可转为整数的场景):
tbl['Quality'] = tbl['Quality'].astype(int) - 容错式转换(若列内存在非数值内容,会将无法转换的值设为
NaN,避免直接报错):import pandas as pd tbl['Quality'] = pd.to_numeric(tbl['Quality'], errors='coerce') # 可选:删除转换后值为NaN的行 tbl = tbl.dropna(subset=['Quality'])
二、Pandas原生筛选方法(推荐)
Pandas是矢量化运算框架,完全不需要像C++那样写逐元素的循环判断,直接用布尔索引就能高效完成筛选:
- 保留所有
Quality ≤4的完整行:qlt_tbl = tbl[tbl['Quality'] <= 4] - 若仅需保留
Quality列的符合条件数值:qlt_tbl = tbl.loc[tbl['Quality'] <= 4, 'Quality']
三、原代码问题解析
你写的代码存在几个关键逻辑错误:
for Quality in tbl:遍历的是DataFrame的列名,而非Quality列的每个元素tbl['Quality'] is int:这是判断整个Series对象的类型是否为int,而非列内元素的类型,显然永远为False- Pandas中不建议用逐元素的
for循环处理数据,不仅效率极低,还容易出现逻辑偏差,要尽快适应矢量化操作的思路
内容的提问来源于stack exchange,提问作者Phibo
相关产品推荐
相关产品推荐

