2016-08-02 265 views
0

我正在嘗試使用NLTK和Pandas進行一些文本處理。在pandas DataFrame列中存儲列表

我有DataFrame列'文本'。我想添加將被存儲爲嵌套列表的'text_tokenized'列。

我的符號化文本代碼:

def sent_word_tokenize(text): 
    text = unicode(text, errors='replace') 
    sents = sent_tokenize(text) 
    tokens = map(word_tokenize, sents) 

    return tokens 

目前,我正嘗試應用這一功能如下:

df['text_tokenized'] = df.apply(lambda row: sent_word_tokenize(row.text), axis=1) 

這使我的錯誤:

ValueError: Shape of passed values is (100, 3), indices imply (100, 21) 

不確定如何解決這個問題,這裏有什麼問題。

相反的:

df['text_tokenized'] = df.apply(lambda row: sent_word_tokenize(row.text), axis=1) 

我用:

df['text_tokenized'] = df.text.apply(lambda text: sent_word_tokenize(text)) 

雖然我不知道爲什麼它的作品,我真的很感激,如果

+0

很難說肯定,但看起來像axis = 1是_row_操作,當你有一個文本_column_? – benten

+0

http://stackoverflow.com/a/19667189/1168680 – RAVI

+0

返回(令牌) – RAVI

回答

1

通過使用不同的軸解決我自己的問題有人可以向我解釋。

+1

當您指定'axis = 1'時,apply函數按列操作(橫跨**數據幀的所有列**) 。但是您必須按行進行計算(跨**數據框的每行**)。因此,需要指定'axis = 0'。 –

相關問題