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