Как удалить несколько шаблонов специальных символов в фрейме данных регулярных выражений Python

#python #regex #dataframe

Вопрос:

Итак, у меня есть usa_sub_states фрейм данных с именем столбца 'state' .

В столбце state есть 5 состояний с неалфавитными строками.

 Massachusetts[C]
Pennsylvania[C]
Rhode Island[D]
Virginia[C]
Hawai'i
 

теперь мне было интересно, есть ли способ заменить все специальные символы пустой строкой, чтобы все они отображались как обычное название штата.

 usa_sub_states.state.replace(to_replace=r'[W]', value='', regex=True, inplace=True) 
 

но по какой-то причине это удалило все содержимое столбца и превратило его в пустую строку.

Комментарии:

1. Попробуйте usa_sub_states['state'] = usa_sub_states['state'].str.replace(r"[[^][]*]|W", "", regex=True) , посмотрите демонстрацию регулярных выражений.

2. ЭТО СРАБОТАЛО! TYTYTYTY

3. хотя у меня просто есть вопрос.

4. как бы вы написали синтаксис с форматом

5. usa_states_sub.state.replace(to_replace=___, значение=__, регулярное выражение=___, место=___)

Ответ №1:

Вы можете использовать

 usa_sub_states.state.replace(to_replace=r'[[^][]*]|W', value='', regex=True, inplace=True)
 

Смотрите демонстрацию регулярных выражений. Подробные сведения:

  • [[^][]*] [ , тогда любые нулевые или более символы, отличные от [ и ]
  • | — или
  • W — любой символ без слов.

Комментарии:

1. У меня только один последний вопрос. Поэтому по какой-то причине все состояния с пробелом теперь являются одним словом без пробела. как я могу этого избежать?

2. @GirthyLampost Исключить пробелы? r'[[^][]*]|[^ws]|_'

3. Я все еще получаю ВестВиргинию

4. @GirthyLampost, тогда это ваш ввод. Или есть какой-то другой код, который удаляет пробелы.

5. ладно, я предполагаю, что это как-то связано с самим блокнотом jupyter, но то, что я сделал, это проверил ячейки одну за другой, начиная с нескольких ячеек, когда в состояниях были специальные символы, а что нет, а затем это сработало.