replace pandas по спискам
Нужно в pandas сделать списочную замену слов. Есть код:
import pandas as pd
df = pd.read_excel('replace_origin.xlsx', engine='openpyxl')
df_lib = pd.read_excel('replace_lib.xlsx', engine='openpyxl')
df_1 = '|'.join(df_lib['old'])
df_2 = '|'.join(df_lib['new'])
print(df_1)
print(df_2)
df['test'] = df['test'].str.replace(df_1, df_2,regex=True)
df.to_excel('replace_test.xlsx')
но проблема в том, что на замену передается весть столбец из переменной df_2
, пример:
df = pd.DataFrame({'test': ['Иванов Иван Иванович', 'Петров С.А.', 'Алексеев Евгений', 'Сидоров Георгий Иванович']})
df_lib = pd.DataFrame({'old': ['Иванов', 'Петров', 'Сидоров'],'new': ['Ivanov', 'Petrov', 'Sidorov']})
На выходе мы получаем следующее:
Ivanov|Petrov|Sidorov Иван Ivanov|Petrov|Sidorovич
Ivanov|Petrov|Sidorov С.А.
Алексеев Евгений
Что я делаю не так? Однозначно, что-то нужно мудрить с df_2
, но что конкретно?
Источник: Stack Overflow на русском