Используйте аргумент suffixes
Если есть перекрывающиеся столбцы, вы можете контролировать то, что добавляется к имени столбца, с помощью аргумента suffixes
.
left.merge(right, 'left', left_on=attr1, right_on=attr2, suffixes=['_', ''])
A B_ B C D E F
0 1 4 10.0 X I 7.0 1.0
1 2 5 11.0 Y J 8.0 2.0
2 3 6 NaN NaN NaN NaN NaN
Обратите внимание, что имя перекрывающегося столбца 'B'
имеет суффикс '_'
, добавленный к столбцу, взятому из кадра данных left
, и суффикс ''
(да, пустая строка), добавленный к столбцу имя из right
кадра данных.
Теперь имена столбцов из right
совпадают с именами столбцов из right
left.merge(right, 'left', left_on=attr1, right_on=attr2, suffixes=['_', ''])[[*right]]
B C D E F
0 10.0 X I 7.0 1.0
1 11.0 Y J 8.0 2.0
2 NaN NaN NaN NaN NaN
Детали [[*right]]
right.columns.tolist()
['C', 'D', 'E', 'F']
Или, как я положил в ответ
[*right]
['C', 'D', 'E', 'F']
Настройка
left = pd.DataFrame(dict(
A=[1, 2, 3],
B=[4, 5, 6],
))
right = pd.DataFrame(dict(
B=[10, 11, 12],
C=[*'XYZ'],
D=[*'IJK'],
E=[7, 8, 9],
F=[1, 2, 4]
))
attr1 = 'A'
attr2 = 'F'