如何将datacolumn中的单词与值列表相匹配,并在python中应用ignorecase
我有一个df如何将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
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)以这种方式标记输入命令和输出你能帮忙吗?我正在研究那个解决方案,但我的朋友打电话来,所以我不得不走了。这不是一件容易的事,我来试试看。:)你能帮个忙吗?我当时正在研究解决方案,但我的朋友打电话来了,所以我不得不走了。这不是一件容易的事,我来试试看。:)