【发布时间】:2021-06-15 07:13:56
【问题描述】:
是否有任何功能相当于df.isin() 和df[col].str.contains() 的组合?
例如,假设我有这个系列
s = pd.Series(['cat','hat','dog','fog','pet']),我想找到所有s 包含任何['og', 'at'] 的地方,我想得到除“宠物”之外的所有东西。
我有一个解决方案,但它相当不雅:
searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()
有没有更好的方法来做到这一点?
【问题讨论】:
-
注意:有一个解决方案described by @unutbu,比使用
pd.Series.str.contains效率更高。如果性能是一个问题,那么这可能值得调查。 -
强烈建议查看this answer 使用多个关键字/正则表达式进行部分字符串搜索(向下滚动到“多个子字符串搜索”子标题)。
标签: python string pandas dataframe match