如何在Python中实现类SQL LIKE的DataFrame模糊匹配更新?
解决方案
直接用pandas的矢量化字符串方法和布尔索引就能解决,不用写低效的循环:
# 构建匹配条件:Genesis以"Incomplete"开头,且日期晚于等于指定周 condition = (open['Genesis'].str.startswith('Incomplete')) & (open['Date'] >= last_date) # 对符合条件的行,将Result列赋值为对应行的Genesis值 open.loc[condition, 'Result'] = open.loc[condition, 'Genesis']
为什么你的循环代码无法正常运行?
- 循环遍历
open['Genesis']时,open['Date'] >= last_date是针对整个Date列的布尔数组,和当前遍历的单个word维度不匹配,导致条件判断逻辑错误。 - 就算条件通过,
open['Result'] = open['Genesis']会把整个Result列全部覆盖成Genesis列的值,而不是只修改符合条件的行,完全不符合需求。
pandas的矢量化操作天生就是用来处理整列/整行的批量逻辑,比手动循环效率高几十倍,还能避免行索引错位的问题。
内容的提问来源于stack exchange,提问作者exenlediatán
相关产品推荐
相关产品推荐

