j'ai un dataframe de pandas géants appelé « data_stem » et il y a une colonne nommée « TWEET_SENT_1 » qui ont des chaînes comme ci-dessous (50 lignes)appliquent porteurs égrappoir à une colonne Pandas pour chaque mot
TWEET_SENT_1
la mack papa de baiser croix
j'ai aimé ce corps vidéo parti
je veux appliquer stemmer porteurs dans la colonne « TWEET_SENT_1 » (pour tous les mots d'une ligne) i essayé ci-dessous le code et il donne une erreur. pourriez-vous s'il vous plaît me aider à surmonter cette
from nltk.stem import PorterStemmer, WordNetLemmatizer
porter_stemmer = PorterStemmer()
data_stem[' TWEET_SENT_1 '] = data_stem[' TWEET_SENT_1 '].apply(lambda x: [porter_stemmer.stem(y) for y in x])
ci-dessous est l'erreur
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-412-c16b1beddfb5> in <module>()
1 from nltk.stem import PorterStemmer, WordNetLemmatizer
2 porter_stemmer = PorterStemmer()
----> 3 data_stem[' TWEET_SENT_1 '] = data_stem[' TWEET_SENT_1 '].apply(lambda x: [porter_stemmer.stem(y) for y in x])
C:\Users\SampathR\Anaconda2\envs\dato-env\lib\site-packages\pandas\core\series.pyc in apply(self, func, convert_dtype, args, **kwds)
2058 values = lib.map_infer(values, lib.Timestamp)
2059
-> 2060 mapped = lib.map_infer(values, f, convert=convert_dtype)
2061 if len(mapped) and isinstance(mapped[0], Series):
2062 from pandas.core.frame import DataFrame
pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:58435)()
<ipython-input-412-c16b1beddfb5> in <lambda>(x)
1 from nltk.stem import PorterStemmer, WordNetLemmatizer
2 porter_stemmer = PorterStemmer()
----> 3 data_stem[' TWEET_SENT_1 '] = data_stem[' TWEET_SENT_1 '].apply(lambda x: [porter_stemmer.stem(y) for y in x])
TypeError: 'NoneType' object is not iterable
Avez-vous des 'None's dans' data_stem ['TWEET_SENT_1'] '? Existe-t-il des espaces autour de TWEET_SENT_1? – DyZ
@DYZ merci beaucoup. il n'y en a pas dans data_stem ['TWEET_SENT_1']. oui il y a des espaces entre TWEET_SENT_1. quand j'exécute 'porter_stemmer.stem (data_stem.iloc [1,2])' ça marche. mais je veux l'appliquer à chaque mot et à toutes les lignes de la colonne –
Vous devez marquer avant d'appliquer comme vous êtes. La façon dont vous faites porter_stemmer.stem (y) dans une compréhension de liste. Il fera lettre par lettre et non mot par mot ce que vous voulez. – Satyadev