Як об’єднати pandas dataframes у кількох стовпцях
Часто вам може знадобитися об’єднати два DataFrames pandas у кількох стовпцях. На щастя, це легко зробити за допомогою функції pandas merge() , яка використовує такий синтаксис:
p.d. merge (df1, df2, left_on=['col1','col2'], right_on = ['col1','col2'])
Цей посібник пояснює, як використовувати цю функцію на практиці.
Приклад 1: об’єднання кількох стовпців із різними назвами
Припустімо, що ми маємо наступні два panda 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 bc 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 comic 0 0 0 22 1 1 0 24 2 1 0 25 3 1 1 33 4 3 1 37
Наступний код показує, як виконати ліве об’єднання за допомогою кількох стовпців з обох DataFrames:
p.d. 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: об’єднання кількох стовпців з однаковими іменами
Припустімо, що ми маємо такі два панди DataFrames з однаковими назвами стовпців:
import pandas as pd #createDataFrames 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:
p.d. 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 DataFrames в індексі
Як скласти кілька Pandas DataFrames