Удаление всего внутри квадратных скобок в серии pandas или фрейме данных - PullRequest
0 голосов
/ 08 мая 2020

Добрый день, можно ли удалить все, что находится внутри , включая квадратные скобки? Заранее благодарим

df = pd.DataFrame({'City': ['Santiago [1]','Madrid [2]','Barcelona [2]']})
df

Город
0 Сантья go [1]
1 Мадрид [2]
2 Барселона [2]

Желаемый результат:

Город
0 Сантья go
1 Мадрид
2 Барселона

Ответы [ 4 ]

2 голосов
/ 08 мая 2020

Используйте split + strip

df.City=df.City.str.split('[').str[0].str.strip()
df
        City
0   Santiago
1     Madrid
2  Barcelona
1 голос
/ 08 мая 2020

Ответ YOBEN_S идеален. Я просто добавляю альтернативу, в которой вам не нужно использовать strip(), просто используя split(), который разделяет строку на пробел между ними.

df.City=df.City.str.split().str[0]
df
        City
0   Santiago
1     Madrid
2  Barcelona

РЕДАКТИРОВАТЬ: Как прокомментировал Ник, это не сработает с городами, содержащими пробелы между ними. Вот альтернатива, если вы хотите разделить пробелом

df = pd.DataFrame({'City': ['Santiago [1]','Madrid [2]','Barcelona [2]','New York [2]','India and China [10]']})
df.City=df.City.apply(lambda x : " ".join(x.split()[:-1]))
df
              City
0         Santiago
1           Madrid
2        Barcelona
3         New York
4  India and China
0 голосов
/ 08 мая 2020

Это должно работать с oen или более [xxx] в любом месте вашей строки.

df.City.str.split('\[.*\]').str.join('')
0 голосов
/ 08 мая 2020

Regex также может работать здесь ... получить все символы до [:

df['extract'] = df.City.str.extract(r'(.*(?=\[))')

       City         extract
0   Santiago [1]    Santiago
1   Madrid [2]      Madrid
2   Barcelona [2]   Barcelona
...