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

2024-04-29 12:35:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在我之前的任务中

python Keyword matching(keyword list - column)

所以它起作用了。此外,我想看到更多

问题

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

输出我想要的Q1*

DF

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。我想检查列表中哪些单词与列表中的行相匹配?

输出我想要的第二季度

假设数据帧与上述示例相同

  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 ()

数一数所有重复的单词

我怎样才能解决它


Tags: nameappledf列表isvalue单词keyword
1条回答
网友
1楼 · 发布于 2024-04-29 12:35:07

如果只想匹配一个,则第一个匹配的值将^{}与列表中的联接值一起使用:

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

对于计数,使用^{}

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

如果要匹配所有值,请使用^{}^{}

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

对于计数,使用带有^{}value_countsDataFrame余构造函数:

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

相关问题 更多 >