如何删除Pandas DataFrame中bathrooms列含非整数值的行?
解决Pandas DataFrame删除非整数bathrooms行的问题
直接用Pandas的向量化筛选比for循环高效且可靠,以下是两种可行方法:
方法1:比较原值与整数转换后的值
通过判断bathrooms列的值是否等于其转换为整数后的值,筛选出整数行:
import pandas as pd data = pd.read_csv('house_data_2024.csv') # 筛选bathrooms为整数的行 cleaned_data = data[data['bathrooms'] == data['bathrooms'].astype(int)] # 查看清理后的数据 cleaned_data.head()
方法2:取模运算判断整数
利用取模1等于0的特性(整数除以1余数为0)来筛选:
import pandas as pd data = pd.read_csv('house_data_2024.csv') cleaned_data = data[data['bathrooms'] % 1 == 0] cleaned_data.head()
为什么for循环容易失败?
在循环中直接删除DataFrame的行会导致索引动态变化,很容易出现漏删或索引错位的问题,而Pandas的向量化操作是基于整个列批量处理,不会有这类问题。
内容的提问来源于stack exchange,提问作者huyen tran nguyen huu
相关产品推荐
相关产品推荐

