Я пытаюсь объединить 2 фрейма данных по имени, где один столбец - это имя + фамилия, а другой - только первое имя + фамилия.
Пример:
дф1:
name
John Doe
дф2:
name
J. Doe
Решение проблемы
Вы можете использовать регулярное выражение, чтобы изменить формат df1['name']
и передать это merge
:
df1.merge(df2,
left_on=df1['name'].str.replace(r'^(.)\w+', r'\1.', regex=True),
right_on='name'
)
NB. проверьте документацию merge
для получения дополнительных параметров для форматирования вывода, в частности suffixes
для настройки имен столбцов.
выход:
name name_x name_y
0 J. Doe John Doe J. Doe
пример ввода:
df1 = pd.DataFrame({'name': ['John Doe']})
df2 = pd.DataFrame({'name': ['J. Doe']})
Комментариев нет:
Отправить комментарий