2017-09-26 14 views

Répondre

0

Disons que vous avez un dataframe df que vous avez généré en utilisant

df = pandas.read_csv('dataset.csv') 

Vous pouvez ensuite ajouter une nouvelle colonne avec le nombre de mots en procédant comme suit:

df['new_column'] = df.columnToCount.apply(lambda x: len(str(x).split(' '))) 

Gardez à l'esprit l'espace dans la division est important puisque vous divisez sur de nouveaux mots. Vous pouvez supprimer les signes de ponctuation ou les chiffres et les réduire en minuscules avant d'effectuer cette opération.

df = df.apply(lambda x: x.astype(str).str.lower()) 
df = df.replace('\d+', '', regex = True) 
df = df.replace('[^\w\s\+]', '', regex = True) 
+0

Pourquoi ne pas utiliser mot NLTK tokenizer? – Dark

+0

C'est une option. – muninn

0
from collections import Counter 

df['new_column'] = df['count_column'].apply(lambda x: Counter(" ".join(x).split(" ")).items()) 
+0

Cela vous oblige à diviser chaque cellule de texte dans 'count_column' en une liste de mots. (Si chaque cellule de 'count_column' contient une seule chaîne, cela compte les caractères.) Aussi, désolé si quelque chose me manque, mais pourquoi' Counter ('' .join (x) .split ('')) '? Est-ce que 'Counter (x)' n'obtient pas le même résultat? ** EDIT: ** une raison de joindre et de diviser est de vous assurer que vous divisez toutes les chaînes de la liste qui contiennent plusieurs mots séparés par des espaces. –

+0

@PeterLeimbigler Comment compterais-tu les caractères si tu divisais par un espace? –

+0

en cours d'exécution ''' .join (a_string_variable)' sur une chaîne insère un espace entre chaque caractère de la chaîne. –