目的是查找列中的每个单元格是否包含一组字符串中的任何一个字符串。
给出以下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
请问我哪里做错了?
您可以为此使用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
表示单词边界,因此该模式不会将maybe
标记为true
。
您可以使用apply
:
dfxx=df['Date'].apply(lambda x: any([i in x for i in stk_list])