【发布时间】:2021-02-09 21:48:15
【问题描述】:
我正在尝试计算数据框每个短语中多个关键字的出现次数。这似乎与其他问题相似,但并不完全相同。
这里我们有一个 df 和一个包含关键字/主题的列表:
df=pd.DataFrame({'phrases':['very expensive meal near city center','very good meal and waiters','nice restaurant near center and public transport']})
topics=[['expensive','city'],['good','waiters'],['center','transport']]
对于每个短语,我们要计算每个单独主题中匹配的单词数。所以第一个短语应该为第一个主题得分为 2,为第二个主题得分为 0,为第三个主题得分为 1,等等
我试过了,但它不起作用:
from collections import Counter
topnum=0
for t in topics:
counts=[]
topnum+=1
results = Counter()
for line in df['phrases']:
for c in line.split(' '):
results[c] = t.count(c)
counts.append(sum(results.values()))
df['topic_'+str(topnum)] = counts
我不确定我做错了什么,理想情况下,我最终会为每个主题/短语组合计算匹配单词,但计数似乎会重复:
phrases topic_1 topic_2 topic_3
very expensive meal near city centre 2 0 0
very good meal and waiters 2 2 0
nice restaurant near center and public transport 2 2 2
非常感谢任何可以帮助我的人。 最好的祝福
【问题讨论】:
-
始终提供完整的minimal reproducible example,其中包含代码、数据、错误、当前输出和预期输出,如 formatted text。如果相关,只有绘图图像是可以的。请参阅How to ask a good question。使用How to provide a reproducible copy of your DataFrame using
df.head(15).to_clipboard(sep=',')提供数据,然后edit 您的问题,然后将剪贴板粘贴到代码块中。