You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历DataFrame检查列值是否存在于列表并新增匹配标识列的方法

代码存在的问题
  • 结果长度不匹配:原代码嵌套了两层循环,每遍历DataFrame的1行,就会遍历3次子市场列表,每比对1次列表元素就往结果列表加1个值,最终结果列表的长度是「DataFrame行数 × 子市场列表长度」,和DataFrame的行数完全不一致,直接赋值给新列会直接报错,就算强行赋值结果也完全错误。
  • 匹配逻辑错误:需求是匹配列表中任意一个元素就算符合要求,但原代码只要和某一个列表元素不匹配就会插入No,就算后续遇到匹配项也会同时插入yes,一行会对应3个结果,完全不符合需求。
  • 执行效率低下:iterrows本身遍历DataFrame的效率极低,在数据量较大的场景下耗时会是向量化操作的几十上百倍,完全没有必要用循环实现这个需求。
正确实现方案

直接用pandas内置的isin()向量化方法实现,一行代码就能完成需求,逻辑清晰效率更高:

submarket_list = [ 'South Financial District', 'Financial District', 'South of Market']
# isin方法会直接返回每行是否在列表中的布尔值,再通过map转换为yes/No
test_df['Submarket Check'] = test_df['Submarket'].isin(submarket_list).map({True: 'yes', False: 'No'})

内容的提问来源于stack exchange,提问作者DavisGrininger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:15:08