如何基于goalLanding页面支持的合法action过滤pandas DataFrame无效行
失效原因
isin()方法是做精确字符串匹配的,无法识别你传入的正则表达式规则,所以完全没有达到按规则匹配的效果- 你整理的正则规则本身存在笔误:实际支持的动作前缀是
explore_more_xxx,你写的是explore_now(\S+),同时前缀和可变后缀之间的下划线漏写,正确前缀应该是view_detail_、explore_more_
大数据量可用的高效实现方案
pandas的str.contains()是底层C实现的矢量化运算,千万级数据量也能快速处理,完全满足你的需求,代码如下:
# 合并所有合法规则为单个正则:匹配view_detail_开头、explore_more_开头,或者完全等于ExitPage的内容 valid_rule = r'^(view_detail_\S+|explore_more_\S+|ExitPage)$' # 执行过滤,na=False表示将step2为空的行也判定为非法过滤掉,可根据实际需求调整 df = df.loc[df['step2'].str.contains(valid_rule, regex=True, na=False)]
规则校验
执行过滤前可以先跑以下代码,确认要过滤的内容符合预期:
# 输出所有被判定为非法的step2取值 print(df.loc[~df['step2'].str.contains(valid_rule, regex=True, na=False), 'step2'].unique())
正常运行后会输出['back_to_opp', 'join_as_mentee'],和你要删除的行完全对应,确认无误后再执行过滤即可。
内容的提问来源于stack exchange,提问作者peace
相关产品推荐
相关产品推荐

