如何用Pandas内置方法判断DataFrame子串是否在指定字符串中?
解决方案
要实现需求,你可以使用Pandas的Series.apply()方法,结合lambda表达式判断每个子串是否存在于目标字符串中,这属于Pandas内置方法的范畴:
import pandas as pd word = 'analphabetic' df = pd.DataFrame({'substring': list('abcdefgh') + ['ab', 'phobic']}) # 添加目标列 df['analphabetic'] = df['substring'].apply(lambda s: s in word) print(df)
运行后输出结果与预期一致:
substring analphabetic 0 a True 1 b True 2 c True 3 d False 4 e True 5 f False 6 g False 7 h True 8 ab True 9 phobic False
另外也可以利用str.contains()的反向思路,构造包含所有子串的正则模式实现,但子串数量较多时效率不如前者:
import re pattern = '|'.join(re.escape(s) for s in df['substring']) df['analphabetic'] = pd.Series([word]*len(df)).str.contains(pattern).groupby(df['substring']).transform('first')
第一种方法更简洁直观,完全符合需求。
内容的提问来源于stack exchange,提问作者T C Molenaar
相关产品推荐
相关产品推荐

