如何基于多部分字符串匹配从现有pandas DataFrame创建新DataFrame?
pandas多字符串匹配筛选DataFrame的正确方法
你遇到的错误是因为在pandas中不能直接用Python原生的or连接布尔Series——str.contains返回的是每个元素对应布尔值的Series,原生or无法判断整个Series的布尔真值,必须用pandas支持的向量化逻辑运算符或者正则表达式合并匹配条件。
解决方案1:使用向量化逻辑或|
给每个str.contains条件单独加括号,用|替代or,实现元素级的逻辑判断:
df_filtered = df[(df['text'].str.contains("Commercial")) | (df['text'].str.contains("Corporate")) | (df['text'].str.contains("SME"))]
解决方案2:用正则表达式合并匹配项(更简洁高效)
把多个目标字符串用正则的|合并,只调用一次str.contains,性能更优:
df_filtered = df[df['text'].str.contains("Commercial|Corporate|SME")]
可选:忽略大小写匹配
如果需要不区分大小写筛选,添加case=False参数:
df_filtered = df[df['text'].str.contains("commercial|corporate|sme", case=False)]
内容的提问来源于stack exchange,提问作者Zenriax Sensei
相关产品推荐
相关产品推荐

