Spec-Zone.ru › pandas 0.25

pandas.DataFrame.combine

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

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

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

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

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

func : function

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

fill_value : scalar value, default None

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

overwrite : bool, default True

Если True, столбцы в первом DataFrame, которые отсутствуют во втором, будут заполнены NaN.

Возвращает:
DataFrame

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

См. также

DataFrame.combine_first
Объединить два DataFrame, используя значения, отличные от None, из первого 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–2012, 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/0.25.0/reference/api/pandas.DataFrame.combine.html

Spec-Zone.ru

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