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