Python 从B列获取A列中找到的字符串计数,并在新列中返回值
我试图得到熊猫中第二列中一列内容的计数。我想把频率计数放在一个叫做频率的新列中 我想在名为[Frequency]的新列中的[Description]列中找到我的[Keyword]列中的字符串的次数 所需输出Python 从B列获取A列中找到的字符串计数,并在新列中返回值,python,pandas,dataframe,Python,Pandas,Dataframe,我试图得到熊猫中第二列中一列内容的计数。我想把频率计数放在一个叫做频率的新列中 我想在名为[Frequency]的新列中的[Description]列中找到我的[Keyword]列中的字符串的次数 所需输出 [keyword] [Description] [Frequency] car car dog car car 3 car car dog dog dog
[keyword] [Description] [Frequency]
car car dog car car 3
car car dog dog dog 1
new car old car car dog 0
keyword Description frequency
0 car car dog car car 3
1 car car dog dog dog 1
2 new car old car car dog 0
我尝试过的代码
我尝试了以下代码,但有两个问题。(频率计数不准确,格式完全错误)
如果精确匹配不重要,请使用
count
,这意味着如果carito
在描述中匹配car
。如果需要避免,请使用@Dani Mesejo
回答
df['new'] = df.apply(lambda x: x['Description'].count(x['keyword']), axis=1)
print (df)
keyword Description Frequency new
0 car car dog car car 3 3
1 car car dog dog dog 1 1
2 new car old car car dog 0 0
如果要精确匹配单词,请使用此选项:
df['frequency'] = [len(re.findall(rf'\b{k}\b', d)) for k, d in zip(df['keyword'], df['Description'])]
print(df)
输出
[keyword] [Description] [Frequency]
car car dog car car 3
car car dog dog dog 1
new car old car car dog 0
keyword Description frequency
0 car car dog car car 3
1 car car dog dog dog 1
2 new car old car car dog 0
@jezrael建议的更好的替代方案是:
df['frequency'] = [len(re.findall(rf'\b{k}\b', d)) for k, d in df[['Description', 'keyword']].to_numpy()]