очистка значений столбцов данных с помощью регулярных выражений - PullRequest
2 голосов
/ 22 марта 2020

Я смотрю на набор данных, в котором есть столбцы "Город" и значения в нем отформатированы, например, Entity ["Город", {"Хэфэй", "Аньхой", "Китай"}]. Я хочу очистить эту колонку, чтобы осталось только название города. В случае приведенного выше примера я хочу, чтобы все было удалено, кроме Хэфэй. Я пытаюсь использовать Rstrip и Lstrip с регулярным выражением. Несмотря на то, что мое регулярное выражение кажется правильным на основе веб-сайтов онлайн-отладчика регулярных выражений, но код не работает. Вот код, который я использую:

df['City'] = df['City'].map(lambda x: x.lstrip(r'(Entity["City", {")').rstrip(r'(",\s"\w+"}])'))

Я хочу, чтобы результат был просто Хэфэй. Но результат, который я получаю:

Hefei", "Anhui", "China

lstrip, кажется, работает, но rstrip удаляет только "}], а не остальные символы, которые мне нужно удалить.

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

1 Ответ

3 голосов
/ 22 марта 2020

IIU C, вы можете сделать:

df['city'] = df['city'].str.extract('{"(.+?)"')
print(df)

Выход

    city
0  Hefei

Шаблон '{"(.+?)"' означает извлекать все между кавычками после первого '{' соответствует как можно меньшему количеству текста.

...