合并数据框中有重叠列的方法

3

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

我该如何合并它们以获得以下结果:
               color
retailer store      
AA       12      Red
BB       13      Green
         14      Blue
         15      Red
2个回答

3
您可以使用 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

这是一个很棒的答案。update会就地更改,没有返回值。这些都是非常有用的功能。+1 - piRSquared
我更喜欢使用combine_first。直接修改对象而不返回值会让你后悔莫及。我更倾向于函数式编程范式,其中你不会修改对象,而是返回一个修改后的对象副本。 - Colonel Beauvel
真的,我同意。但是我不知道有一个关于数据框的“更新”。我会记住它,以备将来可能用到。 - piRSquared

2
您想要使用 combine_first
visits_df.combine_first(stores_df)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接