Удаление определенных c слов, присутствующих в массиве numpy, из строк в столбце данных? [Python] - PullRequest
0 голосов
/ 30 марта 2020

У меня есть numpy массив слов, которые я хочу удалить из строк в Pandas кадре данных. Например: если в этом массиве есть слово «the», а в столбце «The cat» есть строка. Так и должно стать «котом». Я не хочу удалять всю строку, только эти слова.

# This will iterate that numpy array
def iterate():
    for x in range(0, 52):
        for y in range(0, 8):
              return (np_array[x,y])

# The code below drops that row/record

filtered = df[~df.content.str.contains(iterate())]

Помощь будет высоко оценена.

Пример данных: numpy array = [a, about, and, cross, after, after, in, on, as]

Одна ячейка образца: df ['content'] = Обязательно настройтесь и посмотрите, как Дональд Трамп в конце Ночь с Дэвидом Леттерманом, когда он представляет список первой десятки сегодня вечером!

Пример вывода: Обязательно настройте часы Дональд Трамп Поздно вечером, когда он представляет сегодня первую десятку списка!

1 Ответ

0 голосов
/ 30 марта 2020

Если вам удастся получить плоский список стоп-слов для удаления из этого массива Numpy, вы можете создать регулярное выражение, которое соответствует всем стоп-словам, которые вы хотите удалить, затем используйте df.replace.

stopwords = [
    "a", "about", "and", "across", "after",
    "afterwards", "in", "on", "as",
]

# Compile a regular expression that will match all the words in one sweep
stopword_re = re.compile("|".join(r"\b%s\b" % re.escape(word) for word in stopwords))

# Replace and reassign into the column
df["content"].replace(stopword_re, "", inplace=True)

Вы также можете добавить .replace(re.compile(r"\s+"), " "), чтобы свести получившиеся несколько пробелов в один пробел, если ваше приложение требует этого.

...