pandas.DataFrame.combine#
- DataFrame.объединить(other, функция, fill_value=None, перезаписать=True)[источник]#
Выполнить объединение по столбцам с другим DataFrame.
Объединяет DataFrame с other DataFrame с использованием функция для поэлементного объединения столбцов. Индексы строк и столбцов результирующего DataFrame будут объединением двух.
- Параметры:
- otherDataFrame
DataFrame для слияния по столбцам.
- функцияфункция
Функция, которая принимает два ряда в качестве входных данных и возвращает Series или скаляр. Используется для объединения двух фреймов данных столбец за столбцом.
- fill_valueскалярное значение, по умолчанию None
Значение для заполнения NaN перед передачей любого столбца в функцию слияния.
- перезаписатьbool, по умолчанию True
Если True, столбцы в self которые не существуют в other будет перезаписано значениями NaN.
- Возвращает:
- DataFrame
Комбинация предоставленных DataFrames.
Смотрите также
DataFrame.combine_firstОбъедините два объекта 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
Однако, если тот же элемент в обоих датафреймах равен 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
Пример, демонстрирующий использование перезаписать и поведение, когда оси различаются между датафреймами.
>>> 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