簡體   English   中英

如何將函數(BigramCollocationFinder)應用於Pandas DataFrame

[英]How to apply a function ( BigramCollocationFinder) to Pandas DataFrame

我不太習慣編程,需要一些幫助來解決問題。 我有一個具有4列和大約5k行的.csv,充滿了問題和答案。 我想在每個單元格中找到單詞搭配。

起點:具有4列和約5k行的Pandas數據框。 (編號,標題,正文,正文2)

目標:具有7列(Id,標題,標題合並,Body,Body_Collocations,Body2,Body2-Collocations)的數據框,並對每個行應用一個函數。

我在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 Dataframe。 我知道Pandas Dataframes的apply函數,但是無法使其正常工作。

這是我對其中一列的測試方法:

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>

我什至不確定這是否是正確的方法。 有人可以指出我正確的方向嗎?

如果你想申請BigramCollocationFinder.from_words()每個valueBody `列,你必須做的:

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

本質上, apply允許您遍歷各rows ,並將Body column的相應value提供給所應用的函數。

但是,正如評論中所建議的那樣,提供數據樣本將使處理您的特定案件變得更加容易。

謝謝。 我想我提出的問題措辭並不完美。 但是您的回答仍然幫助我找到了解決方案。 有時短暫休息是有益的:-)

如果有人對答案感興趣。 這為我解決了。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM