Spec-Zone.ru › pandas 1

pandas.DataFrame.combine

DataFrame.combine(other, func, fill_value=None, overwrite=True)[source]

Выполнить объединение по столбцам с другой DataFrame.

Объединяет DataFrame с other DataFrame, используя func для поэлементного объединения столбцов. Индексы строк и столбцов результирующей DataFrame будут объединением двух исходных.

Параметры
other:DataFrame

DataFrame для объединения по столбцам.

func:функция

Функция, которая принимает две Series в качестве входных данных и возвращает Series или скаляр. Используется для объединения двух DataFrame по столбцам.

fill_value:скалярное значение, по умолчанию None

Значение для заполнения NaN перед передачей любого столбца в функцию объединения.

overwrite:bool, по умолчанию True

Если True, столбцы в self, которых нет в other, будут перезаписаны NaN.

Возвращает
DataFrame

Объединённые DataFrame.

См. также

DataFrame.combine_first

Объединяет два DataFrame и по умолчанию использует значения, отличные от null, в DataFrame, вызывающем метод.

Примеры

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

>>> df1 = pd.DataFrame({'A': [0, 0], 'B': [4, 4]})
>>> df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
>>> take_smaller = lambda s1, s2: s1 if s1.sum() < s2.sum() else s2
>>> df1.combine(df2, take_smaller)
   A  B
0  0  3
1  0  3

Пример с истинной поэлементной функцией объединения.

>>> df1 = pd.DataFrame({'A': [5, 0], 'B': [2, 4]})
>>> df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
>>> df1.combine(df2, np.minimum)
   A  B
0  1  2
1  0  3

Использование fill_value заполняет None значениями до передачи столбца в функцию объединения.

>>> df1 = pd.DataFrame({'A': [0, 0], 'B': [None, 4]})
>>> df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
>>> df1.combine(df2, take_smaller, fill_value=-5)
   A    B
0  0 -5.0
1  0  4.0

Однако, если одно и то же значение в обоих DataFrame равно None, это None сохраняется.

>>> df1 = pd.DataFrame({'A': [0, 0], 'B': [None, 4]})
>>> df2 = pd.DataFrame({'A': [1, 1], 'B': [None, 3]})
>>> df1.combine(df2, take_smaller, fill_value=-5)
    A    B
0  0 -5.0
1  0  3.0

Пример, демонстрирующий использование overwrite и поведение, когда ось отличается между DataFrame.

>>> df1 = pd.DataFrame({'A': [0, 0], 'B': [4, 4]})
>>> df2 = pd.DataFrame({'B': [3, 3], 'C': [-10, 1], }, index=[1, 2])
>>> df1.combine(df2, take_smaller)
     A    B     C
0  NaN  NaN   NaN
1  NaN  3.0 -10.0
2  NaN  3.0   1.0
>>> df1.combine(df2, take_smaller, overwrite=False)
     A    B     C
0  0.0  NaN   NaN
1  0.0  3.0 -10.0
2  NaN  3.0   1.0

Демонстрация предпочтения переданного DataFrame.

>>> df2 = pd.DataFrame({'B': [3, 3], 'C': [1, 1], }, index=[1, 2])
>>> df2.combine(df1, take_smaller)
   A    B   C
0  0.0  NaN NaN
1  0.0  3.0 NaN
2  NaN  3.0 NaN
>>> df2.combine(df1, take_smaller, overwrite=False)
     A    B   C
0  0.0  NaN NaN
1  0.0  3.0 1.0
2  NaN  3.0 1.0

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.DataFrame.combine.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API