Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merging data frame with overlapping columns

I have following DataFrames:

    stores = [['AA', 12, 'Red'], ['BB', 13, 'Red'], ['BB', 14, 'Red'], ['BB', 15, 'Red']]
    visits = [['BB', 13, 'Green'], ['BB', 14, 'Blue']]

    stores_df = pd.DataFrame(data=stores, columns=['retailer', 'store', 'color'])
    stores_df.set_index(['retailer', 'store'], inplace=True)

    visits_df = pd.DataFrame(data=visits, columns=['retailer', 'store', 'color'])
    visits_df.set_index(['retailer', 'store'], inplace=True)

                color
retailer store       
BB       13     Green
         14      Blue

               color
retailer store      
AA       12      Red
BB       13      Red
         14      Red
         15      Red

How I can merge them in order to get following result:

               color
retailer store      
AA       12      Red
BB       13      Green
         14      Blue
         15      Red
like image 509
Night Walker Avatar asked Apr 25 '26 21:04

Night Walker


2 Answers

You can use update:

In [41]: stores_df.update(visits_df)

In [42]: stores_df
Out[42]:
                color
retailer store
AA       12       Red
BB       13     Green
         14      Blue
         15       Red
like image 73
Colonel Beauvel Avatar answered Apr 27 '26 11:04

Colonel Beauvel


You want to use combine_first

visits_df.combine_first(stores_df)

enter image description here

like image 41
piRSquared Avatar answered Apr 27 '26 11:04

piRSquared