Как объединить Pandas DataFrames в несколько столбцов


Часто вы можете захотеть объединить два кадра данных pandas в нескольких столбцах. К счастью, это легко сделать с помощью функции pandas merge() , которая использует следующий синтаксис:

pd.merge(df1, df2, left_on=['col1','col2'], right_on = ['col1','col2'])

В этом руководстве объясняется, как использовать эту функцию на практике.

Пример 1: объединение нескольких столбцов с разными именами

Предположим, у нас есть следующие два Pandas DataFrames:

import pandas as pd

#create and view first DataFrame
df1 = pd.DataFrame({'a1': [0, 0, 1, 1, 2],
 'b': [0, 0, 1, 1, 1],
 'c': [11, 8, 10, 6, 6]})

print(df1)

 a1 b c
0 0 0 11
1 0 0 8
2 1 1 10
3 1 1 6
4 2 1 6

#create and view second DataFrame 
df2 = pd.DataFrame({'a2': [0, 1, 1, 1, 3],
 'b': [0, 0, 0, 1, 1],
 'd': [22, 24, 25, 33, 37]})

print(df2)

 a2 b d
0 0 0 22
1 1 0 24
2 1 0 25
3 1 1 33
4 3 1 37

В следующем коде показано, как выполнить левое соединение с использованием нескольких столбцов из обоих фреймов данных:

pd.merge(df1, df2, how='left', left_on=['a1', 'b'], right_on = ['a2',' b'])


 a1 b c a2 d
0 0 0 11 0.0 22.0
1 0 0 8 0.0 22.0
2 1 1 10 1.0 33.0
3 1 1 6 1.0 33.0
4 2 1 6 NaN NaN

Пример 2: объединение нескольких столбцов с одинаковыми именами

Предположим, у нас есть следующие два кадра данных pandas с одинаковыми именами столбцов:

import pandas as pd

#create DataFrames
df1 = pd.DataFrame({'a': [0, 0, 1, 1, 2],
 'b': [0, 0, 1, 1, 1],
 'c': [11, 8, 10, 6, 6]})

df2 = pd.DataFrame({'a': [0, 1, 1, 1, 3],
 'b': [0, 0, 0, 1, 1],
 'd': [22, 24, 25, 33, 37]})

В этом случае мы можем упростить использование on = ['a', 'b'], поскольку имена столбцов одинаковы в обоих DataFrames:

pd.merge(df1, df2, how='left', on=['a', 'b'])

 a b c d
0 0 0 11 22.0
1 0 0 8 22.0
2 1 1 10 33.0
3 1 1 6 33.0
4 2 1 6 NaN

Дополнительные ресурсы

Как объединить два кадра данных Pandas в индексе
Как сложить несколько фреймов данных Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.