Reputation: 185
I would like to know if there is a possible way to merge two dataframes by giving an 'if' statement. For example
df
number account_name classification
1 name named
2 place partner
3 animal class
4 thing territory
5 dog home
df1
account_name Number country
name 1 xx
place 2 xy
animal 7 yz
dog 8 zx
I am looking for a code like below
pd.merge(df,df1, on= 'account_name') if df[number] == df1[number]
the result sould be like
number account_name classification number Country
1 name named 1 xx
2 place partner 2 xy
I tried the lambda function as well, code was
x['nn'] = x.apply(lambda y: pd.merge(df, df1, on = 'account_name') if df[number] == df1[number] else 1, axis=1)
Upvotes: 3
Views: 2958
Reputation: 863291
It seems you need add column to parameter on
:
df = pd.merge(df,df1, on= ['account_name', 'number'])
print (df)
number account_name classification country
0 1 name named xx
1 2 place partner xy
But if column names are different use parameters left_on
and right_on
in merge
:
df = pd.merge(df,
df1,
left_on= ['account_name', 'number'],
right_on= ['account_name', 'Number'])
print (df)
number account_name classification Number country
0 1 name named 1 xx
1 2 place partner 2 xy
Upvotes: 4