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

时间:2020-07-07 14:49:18

标签: python pandas replace

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

在下面给出一个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

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

2 个答案:

答案 0 :(得分:1)

您可以为此使用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

答案 1 :(得分:1)

您可以为此使用System.out.println()

apply