Alter
Alter

Reputation: 3464

Pandas update Dataframe with Dictionary

I have a data frame and a dictionary that i want to combine so that the dictionary overwrites the data frame when their keys intersect

Frustrating method:

import pandas as pd
# setup input df
d1 = pd.DataFrame([[1, 2], [5, 6]])
d1.columns = ['a', 'b']
d1 = d1.set_index('a')

# setup input dict
a = {1 : 3, 2: 3}

# Now how do we join?
# ~~~~~~~~~~~~~~~~~~~

# turn dict into dataframe
d2 = pd.DataFrame()
d2 = d2.from_dict(a, orient='index')
d2.columns = d1.columns

# update indices that are the same
d2.update(d1)
# append indices that are different
d2 = d2.append(d1.loc[d1.index.difference( d2.index ) ])
d2

Upvotes: 7

Views: 7560

Answers (1)

akuiper
akuiper

Reputation: 214927

You need combine_first:

d2.combine_first(d1)

#b
#1  3.0
#2  3.0
#5  6.0

Upvotes: 3

Related Questions