是否有任何函數可能等效於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