Owen
Owen

Reputation: 169

Specify columns to output with Pandas Merge function

import pandas as pd
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
                'value': [1, 2, 3, 5]})
df2 = pd.DataFrame({'rkey': ['dog', 'bar', 'baz', 'foo'],
                'value': [5, 6, 7, 8],
               'valuea': [9, 10, 11, 12],
               'valueb': [13, 14, 15, 16]})

I would like to merge these 2 dataframes based on 'value'. However I don't want the result to give me all of the columns in df2. I would like to keep the one with the 'valuea' column header but not the one with 'valueb' column header as per the squared output in the image.

enter image description here

The code I have tried is

df1.merge(df2, on ='value')

Is there a way exclude column with header = valueb using parameters in the merge function?

Upvotes: 0

Views: 497

Answers (1)

Riccardo Bucco
Riccardo Bucco

Reputation: 15384

You cannot exclude columns with a parameter in the merge function.

Try these approaches instead:

pd.merge(df1, df2).drop(columns=['valueb'])
pd.merge(df1, df2.drop(columns=['valueb']))

Upvotes: 2

Related Questions