关键字匹配时的数据分析(列表-列)

宜宾

在我之前的任务中

python关键字匹配(关键字列表-列)

所以它有效。此外,我想了解更多。

Q1。我想检查匹配列表中单词的出现频率。

输出我想要的Q1 *

东风

0   K   Ieatapple
1   Y   bananaisdelicious
2   B   orangelikesomething 
3   Q   bluegrape
4   C   appleislike

mylist = [apple, banana]

#keyword matching

df[df['Value'].str.contains("|".join(mylist))]

  Name                Value
0    K          I eat apple
1    Y  banana is delicious
4    C          appleislike

#output what I want
matching word frequency : apple : 2, banana : 1

Q2。我想检查列表中的哪些单词与匹配列表的行匹配?

输出我想要的Q2

假设数据帧与上面的示例相同,

  Name                Value
0    K          I eat apple
1    Y  banana is delicious
4    C          appleislike

#Matching keyword&row
0 : apple
1 : banana
4 : apple

如果您有多个,我希望您将它们全部显示。

谢谢您的阅读,如果您对我的问题有任何疑问,请问我。

进一步

    Value                 New
0   I eat appleapple      apple,apple
1   banana is delicious   banana
2   appleislikeapple      apple,apple

我应用下面的答案,它工作得很好。但是我还需要一件事。

如上例所示,如果一行中有重复的单词,则会找到所有单词。如果单词重复,我只想显示其中之一。

通过寻找另一个stackoverflow,我尝试了删除一行中重复的单词的方法,例如Ordereddict,但它似乎仅在链接的句子中起作用。

apple apple apple -> apple并不适用于我的情况一样apple, apple -> apple, apple

所以当我使用下面的代码时

s = pd.DataFrame (extracted.tolist ()). stack (). value_counts ()

计算所有重复的单词。

我该如何解决?

耶斯列尔

如果只匹配一个,则首先匹配的值Series.str.extract与列表中的联接值一起使用

df['new'] = df['Value'].str.extract(f'({"|".join(mylist)})', expand=False)
print (df)
  Name                Value     new
0    K          I eat apple   apple
1    Y  banana is delicious  banana
4    C          appleislike   apple

对于计数使用Series.value_counts

s = df['new'].value_counts()
print (s)
apple     2
banana    1
Name: new, dtype: int64

print ('matching word frequency: ' + ', '.join(f'{k}:{v}' for k, v in s.items()))
matching word frequency: apple:2, banana:1

如果想匹配所有值使用Series.str.findall具有Series.str.join

extracted = df['Value'].str.findall(f'({"|".join(mylist)})')
df['new'] = extracted.str.join(',')
print (df)
  Name                   Value           new
0    K  I eat apple and banana  apple,banana
1    Y     banana is delicious        banana
4    C             appleislike         apple

对于计数,请使用DataFramecosntructor与DataFrame.stackvalue_counts

s = pd.DataFrame(extracted.tolist()).stack().value_counts()
print (s)
apple     2
banana    2
dtype: int64

print ('matching word frequency: ' + ', '.join(f'{k}:{v}' for k, v in s.items()))
matching word frequency: apple:2, banana:2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

列表元素与pandas列的关键字匹配

将pandas列中的关键字与另一个元素列表匹配

Python搜索文本列,如果单词列表中有匹配的关键字,则返回

在列表中的pandas列中找到关键字匹配项的数量

将单词列表与文本进行比较并将匹配的关键字存储到其他列

部分关键字匹配不工作时,我试图创建一个从Python中的熊猫数据帧新列?

如何在不同的 Pandas 数据框中搜索关键字并在父 DF 中更新或创建具有匹配关键字的新列

在列中搜索列表中的关键字,并将所有匹配项返回到其他列

列标签列表作为关键字的变量

熊猫:访问列时出现关键字错误

r通过包含关键字的列过滤数据帧

如何通过搜索列表中给定的关键字值在Python pandas数据框中添加新列?

修改关键字与修改列关键字

转换为数据框时,如何将字典关键字保留为第一列?

在分析的字段上搜索时获取匹配的关键字

搜索表中的所有列并仅显示在elasticsearch中匹配关键字的那些列

在文本中搜索关键字并为每个找到的关键字创建一个数据框列?

筛选包含几个关键字的列

关键字匹配在pandas列中给出了重复的单词?

Pandas 将列内容与关键字匹配(带空格和括号)

在所有列中搜索与Spring JPA匹配的关键字

检查所有关键字是否至少匹配 SQL 中的一列

如何使用关键字与特定列匹配来在Rally网格中获取特定记录?

在数组中搜索关键字,如果匹配,则从 Right 列返回值

是否有可能根据关键字列表创建新列

返回列,其中包含字符串列中存在的关键字列表-Pandas

将 Linq to EF 查询构建到可变列数中的可变关键字列表?

熊猫:在文本列中搜索关键字列表并对其进行标记

阅读CSV并根据关键字列表替换一列