Spec-Zone.ru › pandas 0.24

pandas.DataFrame.combine

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

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

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

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

Таблица DataFrame для объединения столбцов.

func : function

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

fill_value : scalar value, default None

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

overwrite : boolean, default True

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

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

См. также

DataFrame.combine_first
Объединяет два объекта DataFrame и использует значения, не равные null, в таблице, вызвавшей метод.

Примеры

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

>>> 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  NaN
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.24.2/reference/api/pandas.DataFrame.combine.html

Spec-Zone.ru

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