Как применить функцию merge чтобы столбцы не клонировались а заполнялись

Код для примера приведен ниже, необходимо написать такой мердж, чтобы значения столбцов value (таких столбцов на реальных данных будет много) не дублировалось в результате. То есть не было в итоговой таблице value_x, value_y, а были только value, value2 и value3.

   df1 = pd.DataFrame({'key': ['foo', 'bar', 'baz'],
                'value': [1, 1, 1],
               'value2': [1, 2, 3]})
   df2 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'foo'],
                'value': [1, 1, 1, 1],
               'value3': [1, 2, 3,4]})
   df1.merge(df2, how='outer', on='key')

Ответы (2 шт):

Автор решения: CrazyElf

Не знаю, как это делается оптимально, но можно оставить одну колонку без суффикса, а другую потом просто удалить:

df3 = df1.merge(df2, how='outer', on='key', suffixes=(None,'_del')).drop(columns='value_del')
df3

Вывод:

    key value   value2  value3
0   foo     1        1       1
1   foo     1        1       4
2   bar     1        2       2
3   baz     1        3       3
→ Ссылка
Автор решения: SergFSM

если в результирующей таблице не нужны значения values из df1 то можно просто из дропнуть перед тем как делать merge, примерно так:

df1 = pd.DataFrame({'key': ['foo', 'bar', 'baz'],
               'value': [1, 1, 1],
               'value2': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'fiz'],
               'value': [1, 1, 1, 1],
               'value3': [1, 2, 3,4]})

df3 = df2.merge(df1.drop(columns='value'), how='outer', on='key')

вывод:

   key  value  value3  value2
0  foo      1       1     1.0
1  bar      1       2     2.0
2  baz      1       3     3.0
3  fiz      1       4     NaN
→ Ссылка