2017-06-07 38 views
0

這似乎是一個這樣簡單的問題,但我希望儘可能避免循環。將同義詞應用於熊貓

df['token']: 
0  [If, you, can, only, visit, one, museum, in, N... 
1  [Do, n't, let, the, neighborhood, ,, exterior,... 
2  [Momofuku, Milk, Bar, is, one, of, those, plac... 
3  [Have, you, been, here, ?, Tell, us, about, it... 
4  [Add, the, Palmer, Trading, Company, to, your,... 
5  [Porchetta, is, fast, and, simple, food, ., No... 

名稱:令牌,D型:我在熊貓列設置以下數據對象

我想申請共發現wordnet.synsets功能列表中的每個值(如果您,可等),只用交還給例如第一個結果:

exterior [Synset('outside.n.01'), Synset('outside.n.02'), Synset('exterior.a.01')] 

我希望能夠使用適用於僅使用第一個結果:同義詞集(「outside.n.01」)

+0

我有點困惑,如果你只使用第一個結果,是否有任何需要運行其他任何功能?即你可以應用一個函數,在列表的第一個元素上調用「Synset」嗎? – OldGeeksGuide

+0

我不是一個關於nltk或wordnet的專家,但我相信你只能將一個單詞傳遞給該函數並返回一個列表。 –

回答

0

從你的評論,我認爲你正在尋找的是一種用單詞上的synsets的第一個結果替換每個單詞的方法,這是正確的嗎?你只需要一個封裝接受單詞列表同義集,並返回什麼同義詞集的回報,對於那些每一個第一元素的功能:

def first(wordlist): 
    # wordlist is a list of words, i.e. ['sun', 'shine', 'spotless'] 
    return [synsets(word)[0] for word in wordlist] 

然後使用applymap到數據幀中的每個元素上運行它:

df.applymap(first) 

這就是你想要做的?

+0

是否可以通過觀看兩個Pandas列來應用map? –

+0

我想我也找到了答案df ['Value'] = df.apply(lambda row:my_test(row ['a'],row ['c']),axis = 1) –

+0

要傳遞兩列,你可以做df [[col1','col2']]。applymap(...) – OldGeeksGuide