引言为什么条件筛选是数据分析的核心技能在处理真实数据时我们常常面临这样的需求从销售数据中找出销售额超过10万的订单筛选出年龄在18-25岁之间的用户群体提取特定时间段内的日志记录这些场景都离不开条件筛选——它是数据清洗、探索性分析EDA和特征工程的基础。本文将通过5个核心方法 3个实战案例带你掌握Pandas中条件筛选的精髓。一、基础条件筛选布尔索引Boolean Indexing1. 单条件筛选假设有一个学生成绩表df_studentsimportpandasaspd data{Name:[Alice,Bob,Charlie,David],Score:[85,92,78,88],Grade:[B,A,C,B]}df_studentspd.DataFrame(data)需求筛选出分数≥90的学生high_scoresdf_students[df_students[Score]90]print(high_scores)输出Name Score Grade 1 Bob 92 A2. 多条件组合筛选与/或/非使用与、|或、~非组合多个条件必须用括号包裹每个条件需求筛选出分数≥80 且 等级为B的学生filtereddf_students[(df_students[Score]80)(df_students[Grade]B)]print(filtered)输出Name Score Grade 0 Alice 85 B 3 David 88 B二、进阶筛选技巧1. 使用query()方法代码更简洁对于复杂条件query()可以避免冗长的括号嵌套# 等价于 (Score 80) (Grade B)filtereddf_students.query(Score 80 and Grade B)2.isin()方法筛选多个特定值需求找出等级为A或C的学生filtereddf_students[df_students[Grade].isin([A,C])]print(filtered)输出Name Score Grade 1 Bob 92 A 2 Charlie 78 C3.str.contains()字符串模糊匹配需求筛选名字中包含‘li’的学生不区分大小写filtereddf_students[df_students[Name].str.contains(li,caseFalse)]print(filtered)输出Name Score Grade 0 Alice 85 B 2 Charlie 78 C三、实战案例从电商数据中提取关键信息假设有一个电商订单数据集df_ordersorders_data{OrderID:[1001,1002,1003,1004],CustomerID:[C001,C002,C001,C003],Amount:[120,45,200,80],Date:[2023-01-15,2023-01-20,2023-02-05,2023-02-10],Category:[Electronics,Clothing,Electronics,Food]}df_orderspd.DataFrame(orders_data)案例1筛选高价值订单金额100high_value_ordersdf_orders[df_orders[Amount]100]案例2筛选2023年2月的电子产品订单importdatetime df_orders[Date]pd.to_datetime(df_orders[Date])# 转换日期格式feb_electronicsdf_orders[(df_orders[Date].dt.month2)(df_orders[Category]Electronics)]案例3统计每个客户的订单总数分组筛选customer_statsdf_orders.groupby(CustomerID).size().reset_index(nameOrderCount)frequent_customerscustomer_stats[customer_stats[OrderCount]1]四、常见错误与避坑指南忘记加括号❌ 错误写法df[df[A] 1 df[B] 2]✅ 正确写法df[(df[A] 1) (df[B] 2)]字符串比较未加引号❌df[df[Grade] A]✅df[df[Grade] A]日期筛选前未转换格式确保先用pd.to_datetime()转换日期列否则无法用.dt访问年月日。总结条件筛选的“三步法”明确需求确定要筛选的列和条件逻辑构建条件用、、isin()等生成布尔序列应用筛选通过df[condition]或query()提取数据下一步建议尝试在真实数据集如Kaggle的Titanic或电商数据中练习学习loc[]和iloc[]实现更复杂的行列筛选探索Dask或PySpark处理超大规模数据的条件筛选附完整代码示例GitHub Gist链接可替换为实际代码仓库链接希望这篇博客能帮助你彻底掌握DataFrame条件筛选如果有任何疑问欢迎在评论区交流