2016-07-14 2 views
2

У меня есть следующие 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 

ответ

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

На самом деле я предпочитаю гораздо больше comb_first. Меняя место и не возвращай, ты забиваешься спиной. Я гораздо более увлечен функциональной парадигмой, в которой вы не изменяете объект, и у вас есть возвращаемое значение: копия объекта, измененная. –

+0

Истинно, я согласен. Но я не знал о «обновлении» на dataframes. Я буду помнить об этом в будущем. – piRSquared

2

Вы хотите использовать combine_first

visits_df.combine_first(stores_df) 

enter image description here

Смежные вопросы