2016-07-14 28 views
2

私は、次のデータフレームを持っている:、重複列のデータフレームをマージ

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 

答えて

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 
+0

これは素晴らしい答えです。 'update'はインプレースで変更され、戻り値はありません。これらは便利な機能です。 +1 – piRSquared

+0

私は実際にはるかに多くのcombine_firstを好む。あなたの背中にあなたを刺すと、あなたの場所と無帰還を変更する。私は、あなたがオブジェクトを変更しないで、戻り値を持つという機能的なパラダイムにもっと敏感です:オブジェクトのコピーが修正されました。 –

+0

真実です。しかし私はデータフレームの「更新」を知らなかった。私は将来の潜在的な使用のためにそれを覚えておきます。 – piRSquared

2

あなたは使いたいcombine_first

visits_df.combine_first(stores_df) 

enter image description here

関連する問題