Python Pandas如何基于单元格条件筛选打印DataFrame指定列
不需要新建中间DataFrame,也没必要折腾迭代、逐行IF判断这类低效方案,pandas原生就能一步写完,代码干净性能还好:
res = df.loc[df['Reviews'].str.contains('Expired', na=False), ['COrder_ID', 'Supplier_Name']] print(res)
几点说明
- 用
loc是标准写法,比连续方括号的链式索引稳妥,不会碰到SettingWithCopyWarning的坑 - 加
na=False是给空值兜底:如果Reviews列里有NaN,str.contains默认会返回NaN,直接塞到布尔索引里会报错,加上这个参数空值会直接被判定为不匹配,不会出问题 - 别用循环/逐行判断:不管是
iterrows还是apply逐行走if判断,数据量上来之后速度比这种原生向量化操作慢几十上百倍,完全没必要。
你之前跑全量列筛选的结果参考:
如果硬要写逐行判断的逻辑(仅做演示,生产环境别用),列表推导式写出来是这样:
# 性能极差,仅作逻辑演示 target_data = [ (row.COrder_ID, row.Supplier_Name) for _, row in df.iterrows() if isinstance(row.Reviews, str) and 'Expired' in row.Reviews ]
内容的提问来源于stack exchange,提问作者AntonioGrissini
相关产品推荐
相关产品推荐

