Python 列表匹配中的不同大小写计数问题

Python 列表匹配中的不同大小写计数问题,python,regex,pandas,numpy,Python,Regex,Pandas,Numpy,我想匹配数据框中的“文本”列和列表 但是,“文本”列中的小写字母和大写字母没有区别。因此,为了捕获所有这些元素,将列表更改为正则表达式,如下所示 Name Text 0 K IeatApple 1 Y bananaisdelicious 2 B orangelikesomething 3 Q blueBanana 4 C appleislike 这样做的一个问题是,它对“苹果”和“苹果”的识别方式不同 有没有办法匹配大写和小写字母并拼

我想匹配数据框中的“文本”列和列表

但是,“文本”列中的小写字母和大写字母没有区别。因此,为了捕获所有这些元素,将列表更改为正则表达式,如下所示

    Name Text
0   K    IeatApple
1   Y    bananaisdelicious
2   B    orangelikesomething 
3   Q    blueBanana
4   C    appleislike
这样做的一个问题是,它对“苹果”和“苹果”的识别方式不同


有没有办法匹配大写和小写字母并拼写相同的单词?

一个想法是将值转换为小写:

#contain matching list - column
extracted = df['text'].str.findall(f'({"|".join(mylist)})').apply(set)

#Matched words are added to the data frame as column.
df['matching'] = extracted.str.join(',')

#keyword counting
s = pd.DataFrame(extracted.tolist()).stack().value_counts()
print(s)

Apple 1
Banana 1
banana 1
apple 1

未测试:extracted=df['text'].str.findallf'{|.joinmylist}',regex=True,case=False.applyset。这可能在某个地方有一个dup问题,所以尽管=@JvdV有一个错误:str_findall有一个意外的关键字参数'regex'Ah,这是一种将'text'改为lower并将'list'应用于lower的方法吗?@Ch3steR-它匹配,但输出是小写、大写组合。@ybin-我想它应该可以处理所有字符串,但是最好的测试它。啊,是的,我没有注意到+1它很好用,谢谢你,乔伊。
#contain matching list - column
extracted = df['text'].str.findall(f'({"|".join(mylist)})').apply(set)

#Matched words are added to the data frame as column.
df['matching'] = extracted.str.join(',')

#keyword counting
s = pd.DataFrame(extracted.tolist()).stack().value_counts()
print(s)

Apple 1
Banana 1
banana 1
apple 1
mylist = [apple, banana]
mylist = [f"(?i){re.escape(k.lower())}" for k in mylist]

extracted = df['text'].str.lower().str.findall(f'({"|".join(mylist)})').apply(set)