如何将datacolumn中的单词与值列表相匹配,并在python中应用ignorecase

如何将datacolumn中的单词与值列表相匹配,并在python中应用ignorecase,python,pandas,dataframe,data-analysis,Python,Pandas,Dataframe,Data Analysis,我有一个df Name Ram is one of the key ram Kumar is playing cricket Ravi is playing and ravi is a good player 和一份清单 my_list=["Ram","ravi"] 我想要的数据帧是 desired_df, Name Match Count Ram is one of the key ram

我有一个df

Name
Ram is one of the key ram
Kumar is playing cricket
Ravi is playing and ravi is a good player
和一份清单

my_list=["Ram","ravi"]
我想要的数据帧是

desired_df,
Name                                        Match    Count 
Ram is one of the key ram                   Ram      1
Kumar is playing cricket                 
Ravi is playing and ravi is a good player   ravi     1   
我试过了

 extracted = df.str.findall('(' + '|'.join(my_list) + ')', 
 flags=re.IGNORECASE).apply(set)
 but I am getting like,
 Match
 Ram,ram
 Ravi,ravi

但是我无法实现我想要的输出,请帮助。

这就是你想要的吗

In [187]: pat = '({})'.format('|'.join(my_list))

In [188]: df['Match'] = df['Name'].str.extract(pat, expand=False)

In [190]: df['Count'] = df.Name.str.count(pat)

In [191]: df
Out[191]:
                                                Name Match  Count
0                          Ram is one of the key ram   Ram      1
1                           Kumar is playing cricket   NaN      0
2  Ravi is playing and ravi (ravi ravi) is a good...  ravi      3  # i've intentionally added `(ravi ravi)`
new_l = [i.lower() for i in my_list]
extracted = df['Name'].str.lower().str.findall('(' + '|'.join(new_l) + ')').apply(set)


df['Match'] = extracted.apply(','.join)
df['count'] = extracted.apply(len)
名称匹配计数 0 Ram是关键Ram 1之一 库马尔正在打板球 拉维·拉姆正在比赛,拉维是一名优秀的球员,拉姆,拉维2
这就是你要找的吗

new_l = [i.lower() for i in my_list]
extracted = df['Name'].str.lower().str.findall('(' + '|'.join(new_l) + ')').apply(set)


df['Match'] = extracted.apply(','.join)
df['count'] = extracted.apply(len)
名称匹配计数 0 Ram是关键Ram 1之一 库马尔正在打板球 拉维·拉姆正在比赛,拉维是一名优秀的球员,拉姆,拉维2
为什么是计数1。这不是假设为2吗?@Bharath,我认为OP想要使用区分大小写的搜索,那么为什么首先忽略大小写呢?有点不清楚here@Bharath哦,我错过了那部分…是的,我想申请忽略案例为什么是计数1。这不是假设为2吗?@Bharath,我认为OP想要使用区分大小写的搜索,那么为什么首先忽略大小写呢?有点不清楚here@Bharath是的,我想应用忽略大小写我不想签入“Name”
df['Count']=df.Name.str.Count(pat)
在某些情况下,如果我在匹配列下有Ram,ravi,那么Count值应该是2,所以我想用(,)分隔单词,并在[187]中取countWhy有
在大多数与熊猫相关的答案中,什么类型的东西?@RaheelKhan,
iPython
(交互式控制台Python)以这种方式标记输入命令和输出我不想签入“Name”
df['Count']=df.Name.str.Count(pat)
在某些情况下,如果我有Ram,ravi在Match列下,然后count值应该是2,所以我想用(,)分隔单词,并计算count为什么[187]中有
大多数与熊猫相关的答案中都有什么类型的东西?@RaheelKhan,
iPython
(交互式控制台Python)以这种方式标记输入命令和输出你能帮忙吗?我正在研究那个解决方案,但我的朋友打电话来,所以我不得不走了。这不是一件容易的事,我来试试看。:)你能帮个忙吗?我当时正在研究解决方案,但我的朋友打电话来了,所以我不得不走了。这不是一件容易的事,我来试试看。:)