Метод combine
Метод combine применяется к DataFrame
и выполняет попарное объединение столбцов с другим
DataFrame. Первым параметром передаётся
другой DataFrame, вторым - пользовательская
функция, которая определяет правило объединения.
Также метод принимает параметр fill_value
для замены пропущенных значений.
Синтаксис
df.combine(other, func, fill_value=None, overwrite=True)
Пример
Давайте объединим две таблицы, выбирая максимальное значение для каждой ячейки:
import pandas as pd
df1 = pd.DataFrame({
'a': [1, 4, 3],
'b': [10, 20, 30]
})
df2 = pd.DataFrame({
'a': [2, 3, 5],
'b': [15, 25, 35]
})
res = df1.combine(df2, lambda x, y: x if x > y else y)
print(res)
Результат выполнения кода:
a b
0 2 15
1 4 25
2 5 35
Пример
Теперь объединим таблицы, суммируя значения ячеек:
import pandas as pd
df1 = pd.DataFrame({
'a': [1, 2, 3],
'b': [10, 20, 30]
})
df2 = pd.DataFrame({
'a': [4, 5, 6],
'b': [40, 50, 60]
})
res = df1.combine(df2, lambda x, y: x + y)
print(res)
Результат выполнения кода:
a b
0 5 50
1 7 70
2 9 90
Пример
Используем параметр fill_value для замены
пропущенных значений перед объединением:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'a': [1, np.nan, 3],
'b': [10, 20, 30]
})
df2 = pd.DataFrame({
'a': [4, 5, 6],
'b': [np.nan, 50, 60]
})
res = df1.combine(df2, lambda x, y: x if x > y else y, fill_value=0)
print(res)
Результат выполнения кода:
a b
0 4 10.0
1 5 50.0
2 6 60.0
Пример
Метод объединяет столбцы по их именам. Если имена не совпадают, столбцы не объединяются:
import pandas as pd
df1 = pd.DataFrame({
'a': [1, 2, 3],
'b': [10, 20, 30]
})
df2 = pd.DataFrame({
'a': [4, 5, 6],
'c': [40, 50, 60]
})
res = df1.combine(df2, lambda x, y: x + y)
print(res)
Результат выполнения кода:
a b c
0 5 NaN NaN
1 7 NaN NaN
2 9 NaN NaN
Смотрите также
-
метод
combine_first,
который объединяет таблицы с приоритетом первого объекта -
метод
update,
который обновляет значения в таблице -
метод
align,
который выравнивает индексы двух таблиц -
метод
compare,
который сравнивает две таблицы и показывает различия