Python pandas DataFrame关键词搜索及匹配标识添加方法
问题原因
原有代码的核心问题是apply计算得到的匹配结果没有赋值给DataFrame对象,执行完逻辑后结果直接被丢弃,DataFrame本身没有新增任何列,导出的CSV自然不会包含匹配标识。除此之外原有逻辑未处理空值、大小写差异场景,很容易出现漏匹配的问题。
修正代码
以下代码会在DataFrame中新增两个字段:匹配状态布尔标记、行内匹配项累计计数,同时兼容空值、大小写不一致的常见场景:
import pandas as pd import numpy as np df = pd.read_csv('InventoryValue-byItem-6-25-22.csv') keyword = "VODKA" # 匹配状态标记:任意列命中关键词即为True df["match_flag"] = df.apply( lambda x: x.astype(str).str.contains(keyword, case=False, na=False).any(), axis=1 ) # 匹配计数:统计当前行命中关键词的字段总数 df["match_count"] = df.apply( lambda x: x.astype(str).str.contains(keyword, case=False, na=False).sum(), axis=1 ) df.to_csv('file_name.csv', index=False)
关键参数说明
case=False:匹配时忽略大小写,避免Vodka、vodka等不同大小写格式的目标内容被漏判na=False:空值统一判定为不匹配,避免空值转字符串后触发报错或出现意外匹配结果- 直接将
apply返回值赋值给df["列名"],才能把计算结果持久化到DataFrame结构中,最终写入导出的CSV文件
校验小技巧:导出文件前可以执行
print(df[df["match_flag"]]),直接在控制台打印所有命中关键词的行,快速确认匹配结果是否符合预期。
内容的提问来源于stack exchange,提问作者signmeupnow
相关产品推荐
相关产品推荐

