Mithril
Mithril

Reputation: 13808

pandas merge column by another column

I have two excel, named df1 and df2.

df1.columns : url, content, ortheryy

df2.columns : url, content, othterxx

Some contents in df1 are empty, and df1 and df2 share some urls(not all). What I want to do is fill df1's empty content by df2 if that row has same url.

I tried

ndf = pd.merge(df1, df2[['url', 'content']], on='url', how='left') 
# how='inner' result same

Which result:

two column: content_x and content_y

enter image description here

I know it can be solve by loop through df1 and df2, but I'd like to do is in pandas way.

Upvotes: 2

Views: 445

Answers (1)

jezrael
jezrael

Reputation: 863501

I think need Series.combine_first or Series.fillna:

df1['content'] = df1['content'].combine_first(ndf['content_y'])

Or:

df1['content'] = df1['content'].fillna(ndf['content_y'])

It works, because left join create in ndf same index values as df1.

Upvotes: 2

Related Questions