Найти и заменить строки в кадре данных - PullRequest
0 голосов
/ 28 августа 2018

Здравствуйте, я хочу найти конкретные термины в значениях данных, а затем заменить их на совпадения с ключами словаря.

Фрейм данных:

    Search         term               Application
safe high school   trip                1
spring break       trips               2
gap year           trips               1

У меня есть список слов, которые я хочу заменить в словаре, ключи - это термины, которые нужно найти, а затем заменить их значениями.

{'high school': ['high-school'],
'spring break': ['spring-break'],
'gap year': ['gap-year']}

Идея выхода:

    Search         term               Application
safe high-school   trip                1
spring-break       trips               2
gap-year           trips               1

Я не могу найти способ заменить часть строки в значении фрейма данных, поэтому в данный момент я читаю фреймы данных как строки

with open('df.csv','r',encoding='UTF-8') as f:
    s = f.read() + '\n'

затем, используя str.replace, чтобы заменить их один за другим, это работает, но неэффективно.

s = str.replace(s, 'gap year', 'gap-year')

Если есть способ заменить пробелы в определенных терминах на "-", то использование словаря не требуется

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Сначала измените словарь, удалив списки, а затем Series.replace с regex=True для замены подстрок:

d = {'high school': 'high-school',
     'spring break': 'spring-break',
     'gap year': 'gap-year'}

df['Search term'] = df['Search term'].replace(d, regex=True)

print (df)
             Search term  Application
0  safe high-school trip            1
1     spring-break trips            2
2         gap-year trips            1
0 голосов
/ 28 августа 2018

Вы можете использовать df.replace с regex=True

Ex:

to_replace = {'high school': 'high-school','spring break': 'spring-break','gap year': 'gap-year'}
df["Search term"] = df["Search term"].replace(to_replace, regex=True)
print(df)

Выход:

             Search term  Application
0  safe high-school trip            1
1     spring-break trips            2
2         gap-year trips            1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...