如何将函数(bigramlocationfinder)应用于Pandas DataFram

2024-06-16 12:05:04 发布

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

我不太习惯编程,需要一些帮助来解决问题。 我有一个.csv,有4列和大约5k行,充满了问题和答案。 我想在每个单元格中找到单词搭配。在

起点:熊猫数据帧,4列,约5k行。(Id、标题、正文、正文2)

目标:包含7列(Id、Title、Title搭配、Body、Body\u搭配、Body2、Body2搭配)的Dataframe,并在其每一行上应用一个函数。在

我在NLTK文档中找到了Bigramm搭配的一个例子。在

bigram_measures = nltk.collocations.BigramAssocMeasures()
finder.apply_freq_filter(3)
finder = BigramCollocationFinder.from_words(nltk.corpus.genesis.words('english-web.txt'))
print (finder.nbest(bigram_measures.pmi, 5))
>>>[('Beer', 'Lahai'), ('Lahai', 'Roi'), ('gray', 'hairs'), ('Most', 'High'), ('ewe', 'lambs')]

我想让这个函数适应我的Pandas数据帧。我知道Pandas Dataframes的apply函数,但无法正常工作。在

这是我对其中一个列的测试方法:

^{pr2}$

但如果我把它打印出来作为一个示例行

print (df['Body-Collocation'][1])
>>> <nltk.collocations.BigramCollocationFinder object at 0x113c47ef0>

我甚至不知道这是不是正确的方法。有人能给我指出正确的方向吗?在


Tags: 数据函数idfindertitlebodyapplywords
2条回答

{{cd2>如果你想在^`cd2>列中申请^`cd2>:

df['Body-Collocation'] = df.Body.apply(lambda x: BigramCollocationFinder.from_words(x))

本质上,apply允许您循环rows,并向应用的函数提供Bodycolumn对应的{}。在

但正如评论中所建议的那样,提供一个数据样本将使您更容易解决具体的问题。在

谢谢,为了答案。我想我问的问题措辞不太恰当。但你的回答还是帮我找到了解决办法。有时候休息一下很好:-)

如果有人对答案感兴趣。这对我来说是可行的。在

df['Body-Collocation'] = df.apply(lambda df: BigramCollocationFinder.from_words(df['Question-Tok']),axis=1)
df['Body-Collocation'] = df['Body-Collocation'].apply(lambda df: df.nbest(bigram_measures.pmi, 3))

相关问题 更多 >