Python 如何将函数(BigramColonmentFinder)应用于数据帧

Python 如何将函数(BigramColonmentFinder)应用于数据帧,python,numpy,pandas,machine-learning,nltk,Python,Numpy,Pandas,Machine Learning,Nltk,我不太习惯编程,需要一些帮助来解决问题。 我有一个.csv文件,有4列,大约5k行,里面充满了问题和答案。 我想找出每个单元格中的单词搭配 起点:熊猫数据框,4列,约5k行。(Id、标题、正文、正文2) 目标:具有7列(Id、标题、标题搭配、正文、正文搭配、正文2、正文2搭配)的数据框架,并在其每一行上应用一个函数 我在NLTK文档中找到了一个Bigram搭配的示例 bigram_measures = nltk.collocations.BigramAssocMeasures() finder.

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

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

目标:具有7列(Id、标题、标题搭配、正文、正文搭配、正文2、正文2搭配)的数据框架,并在其每一行上应用一个函数

我在NLTK文档中找到了一个Bigram搭配的示例

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 Dataframes的应用功能,但无法使其正常工作

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

df['Body-Collocation'] = df.apply(lambda df: BigramCollocationFinder.from_words(df['Body']),axis=1)
但是如果我把它打印出来作为一个示例行

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

我甚至不确定这是不是正确的方法。有人能给我指一下正确的方向吗?

如果你想将
BigramColonmentFinder.from_words()
应用到
Body
`列中的每个
值,你必须执行以下操作:

df['Body-Collocation'] = df.Body.apply(lambda x: BigramCollocationFinder.from_words(x))
本质上,
apply
允许您循环查看
,并向应用函数提供
正文
的相应


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

Thx,答案如下。我想我问的问题措辞不太恰当。但你的回答仍然帮助我找到了解决办法。有时休息一会儿是好的:-)

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

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

您可以打印lambda函数的变量,以确定它的格式是否适合您的函数。也许你必须做一些像“x.values”的事情,你能添加吗?我会记住这一点,下次再编辑。谢谢大家。