У меня есть фрейм данных, который выглядит так:

Agincourt North (129) ( 23.7%)
Agincourt South-Malvern West (128) ( 21.6%)
Alderwood (20) ( 25.4%)
Annex (95) ( 27.9%)

Я хочу, чтобы это выглядело так:

Agincourt North (129) 
Agincourt South-Malvern West (128) 
Alderwood (20) 
Annex (95) 

Я пытаюсь использовать функцию str.replace, но у меня проблемы с синтаксисом. Любой совет будет принят во внимание.

de['Geography']=de['Geography'].str.replace('()','')
0
Saifullah 21 Авг 2020 в 02:18

3 ответа

Лучший ответ

Вы можете попробовать это:

df['column2'] = df['column'].str.replace(r'\( [\d\.\%]+\)', '')
print(df)

Или это будет работать, только если формат всегда содержит ( 23.0%) пробел после (:

df['column2'] = df['column'].str.split('\( ').str[0]

Вывод:

                          column                              column2
0               Agincourt North (129) ( 23.7%)               Agincourt North (129)
1  Agincourt South-Malvern West (128) ( 21.6%)  Agincourt South-Malvern West (128)
2                      Alderwood (20) ( 25.4%)                      Alderwood (20)
3                          Annex (95) ( 27.9%)                          Annex (95)
0
NYC Coder 20 Авг 2020 в 23:32

Есть два синтаксиса; один для строк и один для строки соответствия регулярному выражению. Вот обе версии:

Сопоставление строк (выполняется для каждого открытого / закрытого родительского элемента):

de['Geography']=de['Geography'].str.replace("(", "").str.replace(")","").str.strip()

Версия строки регулярного выражения. Обратите внимание, что r перед литералом указывает, что его следует интерпретировать как строку регулярного выражения (хотя в данном случае это не имеет значения):

de['Geography']=de['Geography'].str.replace(r"[()]", "").str.strip()

Выход:

0                 Agincourt North 129  23.7%
1    Agincourt South-Malvern West 128  21.6%
2                        Alderwood 20  25.4%
3                            Annex 95  27.9%
0
anon01 20 Авг 2020 в 23:41

Попробуйте использовать что-то вроде этого, чтобы заменить (23,7%) пустым. Он должен заменить любые пробелы (любые пробелы (float или int number%)) любые пробелы пробелом.

df['Geography'].str.replace(r'\s*\(\s([0-9]*\.?[0-9]+)\%\)\s*','')
1
arundeep chohan 21 Авг 2020 в 00:16