无法根据子字符串集过滤熊猫数据框

目标是查找列中的每个单元格是否包含一组字符串中的任一字符串。


给出下面的 df;


df = pd.DataFrame({'Date': ['1 December 2020', 'May 2020', 'Random value', 'may 2019']})

和一个标志子字符串


stk_list = ['December','May']

它应该返回


True; True; False; True

但是,使用下面的代码


stk_list = ['December','May']

df = pd.DataFrame({'Date': ['1 December 2020', 'May 2020', 'Random value', 'may 2019']})

dfxx=df['Date'].isin(stk_list)

它返回


False; False;False;False

我可以知道我哪里做错了吗?


慕斯709654
浏览 82回答 2
2回答

千万里不及你

regex您可以为此目的使用:pattern = '|'.join(s.lower() for s in stk_list) df.Date.str.lower().str.contains(pattern)您可能需要修改pattern,以便它只检查整个单词:pattern = r"\b({})\b".format('|'.join(s.lower() for s in stk_list))这里\b表示单词 boudary,因此此模式不会标记maybe为True.

慕勒3428872

您可以apply为此使用:dfxx=df['Date'].apply(lambda x: any([i in x for i in stk_list])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python