Очистить текстовые данные в Python

Я хочу создать новый столбец для текстовых данных (каждая строка для этого столбца представляет собой одно описание) после удаления всех чисел (например, 189, 98001), специальных символов (', _, ", (,)) и букв с числа или специальные символы (e21x16, e267, e4, e88889, entry778, id2, n27th, pv3, ).

Поэтому я написал функцию ниже. Однако возвращаемые результаты по-прежнему содержат числа и специальные символы. По сути, моя цель — оставить только английские слова и аббревиатуры. Кто-нибудь знает, почему моя функция не работает.

def standardize_text(df, text_field):
  df[text_field] = df[text_field].str.lower()
  df[text_field] = df[text_field].str.replace(r'(', '') 
  df[text_field] = df[text_field].str.replace(r')', '')
  df[text_field] = df[text_field].str.replace(r',', '')
  df[text_field] = df[text_field].str.replace(r'_', '')
  df[text_field] = df[text_field].str.replace(r"'", "")
  df[text_field] = df[text_field].str.replace(r"^[a-z]+\[0-9]+$", "")
  df[text_field] = df[text_field].str.replace(r"^[0-9]{1,2,3,4,5}$", "")
  return df

person AI2.0    schedule 19.03.2018    source источник
comment
Почему у тебя '\' в r"^[a-z]+\[0-9]+$"?   -  person DYZ    schedule 19.03.2018
comment
Не могли бы вы привести пример того, как выглядит колонка и какой вы хотели бы ее видеть?   -  person lucastamoios    schedule 19.03.2018
comment
Вы также должны указать тип df и его членов.   -  person lucastamoios    schedule 19.03.2018
comment
Вот один пример: (n) полностью обсыпанный, 42 'x 57', трехэтажная трехкомнатная квартира (городская (есть также некоторые опечатки, с которыми я не уверен, как справиться). Поскольку я хочу сделать тематическое моделирование по этим описаниям, поэтому мне нужно будет удалить не слова, такие как цифры и специальные символы. Я не уверен, что это имеет смысл   -  person AI2.0    schedule 19.03.2018


Ответы (2)


Используйте библиотеку с именем textcleaner. См. репозиторий и ссылка. Эта статья может вам помочь.

!pip install textcleaner
import textcleaner as tc 

or

from textcleaner import *

теперь просто вызовите main_cleaner(<FILE_NAME>), он вернет вам список слов со всей базовой предварительной обработкой.

person Yugant Hadiyal    schedule 24.12.2018

Вы должны либо установить для параметра inplace функции replace значение true, либо присвоить возвращаемый df переменной df

person Surya    schedule 19.03.2018
comment
Конечно, ОП присваивает результаты одному и тому же полю. - person DYZ; 19.03.2018
comment
Извините. числа не были заменены, потому что ваше регулярное выражение "^[a-z]+\[0-9]+$" требует, чтобы строки заканчивались цифрой. попробуйте "^[a-z]+\[0-9]+" или "\d+" - person Surya; 19.03.2018