Объединение двух фреймов данных в некоторых перекрывающихся столбцах с сохранением неперекрывающихся столбцов

1

В настоящее время у меня есть два кадра данных:

df1:

     col1    col2   col3   col4
 0  Apple   store1    1      3
 1  Tree    store2    1      3
 2  Banana  store3    2      4
 3  Card    store4    2      4 ...

df2:

     col1    col2   col3   col4   col5   col6
 0  Apple   store1    1      3     123    50
 1  Tree    store2    1      3     451    32
 2  Mango   store2    2      4     313    15
 3  Guava   store5    2      4     113     9

Я хочу объединить df1 и df2 вместе, если значения в первых четырех столбцах идентичны, но я хочу добавить значения col5 и col6 в объединенный фрейм. Таким образом, идеальным выходом будет:

merged_df:

     col1    col2   col3   col4   col5   col6
 0  Apple   store1    1      3     123    50
 1  Tree    store2    1      3     451    32 ...

Когда я попытался объединиться, я получаю значения NaN, возвращаемые на col5 и col6 на объединенной части данных. Любые идеи, пожалуйста?

Спасибо

Теги:
pandas
dataframe
merge

3 ответа

1

Вы хотите внутреннее слияние. По умолчанию для объединения используются общие столбцы:

res = df1.merge(df2, how='inner')

print(res)

    col1    col2  col3  col4  col5  col6
0  Apple  store1     1     3   123    50
1   Tree  store2     1     3   451    32
0

тебе нужно,

pd.merge(df1,df2,on=['col1','col2','col3','col4'])
[out]
#col1   col2    col3    col4    col5    col6
#Apple  store1  1       3       123     50
#Tree   store2  1       3       451     32
0

Вот более сложный пример с несколькими ключами соединения. Только клавиши, появляющиеся слева и справа, присутствуют (пересечение), так как how = 'inner' по умолчанию.

Из документов pandas:

result = pd.merge(left, right, on = ['key1', 'key2'])

result = pd.merge(def1, df2, on=['col1','col2','col3','col4'])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню