2016-08-02 17 views
0

Ich versuche, einige Textverarbeitung mit NLTK und Pandas zu tun.Speichern von Liste in einer Pandas DataFrame Spalte

Ich habe DataFrame mit Spalte 'Text'. Ich möchte die Spalte 'text_tokenized' hinzufügen, die als verschachtelte Liste gespeichert wird.

für Tokenisieren Text Mein Code ist:

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

    return tokens 

Zur Zeit versuche ich, diese Funktion wie folgt anwenden:

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

Was mich Fehler gibt: Nicht

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

sicher, wie es zu beheben ist und was hier falsch ist.

+0

Schwer zu sagen, aber sieht aus wie Achse = 1 ist eine Operation _row_, wenn Sie eine _column_ von Text haben? – benten

+0

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

+0

Rückkehr (Tokens) – RAVI

Antwort

1

meine eigene Frage gelöst durch andere Achse mit:

Statt:

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

I verwendet:

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

Obwohl ich nicht sicher bin, warum es funktioniert, und ich wirklich zu schätzen, wenn jemand könnte es mir erklären.

+1

Wenn Sie 'axis = 1' angegeben haben, wurde die Anwendungsfunktion spaltenweise (über ** alle Spalten ** des Datenrahmens) ausgeführt. . Stattdessen mussten Sie die Berechnung zeilenweise durchführen (über ** jede Zeile ** des Datenrahmens). Daher muss "axis = 0" angegeben werden. –

Verwandte Themen