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
You need combine_first:
d2.combine_first(d1)
#b
#1 3.0
#2 3.0
#5 6.0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With