Python中data[data["total_savings"]<400000]式筛选是什么?如何使用?
Pandas布尔索引:你看到的高效数据筛选方法
这是Pandas布尔索引(Boolean Indexing),是Pandas库中针对DataFrame/Series的核心数据筛选手段,专门用于高效过滤结构化数据,也是数据科学、机器学习场景里的常用操作。
为什么它比map()快?
map()是原生Python的逐元素处理方法,本质是在Python层面循环遍历每个元素;而Pandas的布尔索引基于向量化运算,底层用C实现,跳过了Python循环的开销,处理大规模数据集时效率差距会非常明显。
怎么使用布尔索引?
这里举几个常用场景:
- 基础单条件筛选:就是你看到的写法,先通过条件生成布尔序列,再用它索引原数据:
这里# 筛选total_savings小于400000的所有行 filtered_data = data[data["total_savings"] < 400000]data["total_savings"] < 400000会返回一个和原DataFrame行数一致的布尔Series,值为True的位置就是符合条件的行。 - 多条件组合筛选:用
&(逻辑与)、|(逻辑或)组合条件,记得给每个条件加括号:# 筛选储蓄小于40万且年龄大于30的行 filtered_data = data[(data["total_savings"] < 400000) & (data["age"] > 30)] - 反向筛选:用
~取反布尔条件,筛选不符合原条件的数据:# 筛选储蓄大于等于40万的行 filtered_data = data[~(data["total_savings"] < 400000)] - Series的筛选:布尔索引同样适用于Pandas Series:
savings_series = data["total_savings"] high_savings = savings_series[savings_series > 100000]
注意事项
这个写法只适用于Pandas的DataFrame和Series对象,原生Python列表不能直接这么用,如果要对普通列表做类似操作,需要先把列表转换成Pandas数据结构。
内容的提问来源于stack exchange,提问作者Abdulrahman Azmy
相关产品推荐
相关产品推荐

