Python - функция для удаления стоп-слов из серии панд - PullRequest
0 голосов
/ 05 марта 2019

У меня есть данные ниже, хранящиеся в виде серии (называемые data_counts ), показывающие слова в индексе и значения счетчиков в столбце «0».Серия содержит 30 тыс. Слов, однако я использую приведенное ниже в качестве примера:

Index      |    0

the        |    3425
American   |    431 
a          |    213 
I          |    124
hilarious  |    53
Mexican    |    23
is         |    2 

. Я бы хотел преобразовать слова в индексе в нижний регистр и удалить стоп-слова, используя NLTK.Я видел несколько примеров того, как SO достигает этого, используя 'lambdas' (см. Пример ниже для информационного кадра), однако я хотел бы сделать это, запустив вместо этого функцию DEF (я новичок в Python, и это кажется мне самым простымПонимаю).

df['Index'] = df['Index'].apply(lambda stop_remove: [word.lower() for word in stop_remove.split() if word not in stopwords])

Большое спасибо заранее

1 Ответ

0 голосов
/ 05 марта 2019

Если вы действительно хотите define свою собственную функцию, вы можете использовать .apply после этой строки:

from nltk.corpus import stopwords

df = pd.DataFrame(index=['the', 'American', 'a', 'I', 'hilarious', 'Mexican', 'is'],
                  data={ 0:[3425, 431, 213, 124, 53, 23, 2]})

# Clean up dataframe and convert words to lowercase
df['words'] = df.index.str.lower()
df.reset_index(drop=True, inplace=True)

# Define our function to remove stopwords
def remove_stopwords(word):
    if word not in stopwords.words('english'):
        return word
    else:
        return ''

# Apply the function to our words column to clean up.
df['words_clean'] = df.words.apply(remove_stopwords)
print(df)
      0      words words_clean
0  3425        the            
1   431   american    american
2   213          a            
3   124          i            
4    53  hilarious   hilarious
5    23    mexican     mexican
6     2         is             
...