Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas update Dataframe with Dictionary

Tags:

python

pandas

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
like image 702
Alter Avatar asked Jun 03 '17 01:06

Alter


1 Answers

You need combine_first:

d2.combine_first(d1)

#b
#1  3.0
#2  3.0
#5  6.0
like image 172
Psidom Avatar answered Nov 17 '22 09:11

Psidom