В настоящее время у меня есть два кадра данных:
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 на объединенной части данных. Любые идеи, пожалуйста?
Спасибо
Вы хотите внутреннее слияние. По умолчанию для объединения используются общие столбцы:
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
тебе нужно,
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
Вот более сложный пример с несколькими ключами соединения. Только клавиши, появляющиеся слева и справа, присутствуют (пересечение), так как how = 'inner' по умолчанию.
Из документов pandas:
result = pd.merge(left, right, on = ['key1', 'key2'])
result = pd.merge(def1, df2, on=['col1','col2','col3','col4'])