是否有任何函数可能等效于df.isin()
和df[col].str.contains()
的组合?pandas:测试字符串是否包含列表中的一个子字符串
例如,说我有一系列 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()
有没有更好的方式来做到这一点?
也许很好添加此链接http://pandas.pydata.org/pandas-docs/stable/text.html#splitting-and-replacing-strings了。从熊猫0.15开始,字符串操作更容易 – goofd 2014-10-26 21:19:09
有一点你必须注意的是,如果searchfor中的字符串有特殊的正则表达式字符(你可以[用re.escape映射](http://stackoverflow.com/questions)/280435 /逸出正则表达式串合蟒))。 – 2014-10-26 21:24:56
@AndyHayden谢谢你,我已经改进了我的答案,将这个复杂因素考虑在内。 – 2014-10-26 21:42:47