Три способа комбинировать DataFrames в Pandas

Эта функция обеспечивает самый низкий уровень контроля. Он объединит строки из двух таблиц на основе общего столбца или индекса. Взгляните на иллюстрацию ниже, чтобы понять различные типы соединений.

Тип соединения операции

Теперь давайте посмотрим на часть кодирования.

 df1 = pd  .DataFrame ({'ключ': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'], 'A': ['A0', 'A1', 'A2'  , 'A3', 'A4', 'A5']}) df2 = pd.DataFrame ({'ключ': ['K0', 'K1', 'K2'], 'B': ['B0', '  B1 ',' B2 ']}) print (df1) print (df2) 

Определение двух образцов DataFrames

Результатом приведенного выше фрагмента кода является:

  key  A0 K0 A01 K1 A12 K2 A23 K3 A34 K4 A45 K5 Клавиша A5 B0 K0 B01 K1 B12 K2 B2  

Теперь давайте соединим два DataFrame.

 df1.join (df2, lsuffix = '_ caller', rsuffix = '_ other') 

Результатом вышеуказанной операции соединения будет:

  key_caller A key_other B0 K0 A0 K0 B01 K1 A1  K1 B12 K2 A2 K2 B23 K3 A3 NaN NaN4 K4 A4 NaN NaN5 K5 A5 NaN NaN  

Пояснение:

  • По умолчанию join () выполняет левую join, но вы можете изменить тип соединения, указав значение для параметра how в функции join () как how = 'type_of_join'
  • Параметр lsuffix — это суффикс, который будет добавлен к имени столбца из перекрывающихся столбцов левого фрейма.
  • Параметр rsuffix — это суффикс, который будет добавлен к имени столбца из перекрывающихся столбцов правого фрейма..

Эта функция также используется для объединить или объединить два DataFrames с одинаковыми столбцами или индексами. Более или менее, он делает то же самое, что и join () .

Однако merge () позволяет нам указать какие столбцы объединять для левого и правого фреймов данных.

merge () полезно, когда мы не хотим объединяться по индексу.

 df1 = pd  .DataFrame ({'lkey': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 5]}) df2 = pd.DataFrame ({'rkey  ': [' foo ',' bar ',' baz ',' foo '],' value ': [5, 6, 7, 8]}) print (df1) print (df2) 

Определение двух образцов DataFrames

Результатом приведенного выше кода является:

  lkey value0 foo 11 bar 22 baz 33 foo 5 rkey value0 foo 51 bar 62 baz 73 foo 8  

Теперь давайте объединим два DataFrame.

 df1.merge (df2, left_on = 'lkey', right_on = 'rkey') 

Результатом приведенного выше кода является:

  lkey value_x rkey value_y0 foo 1 foo 51 foo 1 foo 82 foo 5 foo  53 foo 5 foo 84 bar 2 bar 65 baz 3 baz 7  

Пояснение:

  • Параметр left_on — это имена уровня столбца или индекса, которые нужно присоединить в левом фрейме данных.
  • Параметр right_on — это имена столбцов или уровней индекса, которые нужно присоединить в правом DataFrame.
  • По умолчанию функция merge () n выполняет внутреннее соединение, но вы можете изменить его, передав значение параметра how='type_of_join'.

Эта функция используется для добавления одного (или нескольких) DataFrames, расположенных под другим (или сбоку, в зависимости от того, установлен ли параметр оси на 0 или 1).

Кроме того, убедитесь, что размеры DataFrames должны совпадать по оси при объединении.

 df1 = pd.DataFrame ({'Ключ': ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 'data1': range (  7)}) df2 = pd.DataFrame ({'Ключ': ['a', 'b', 'd'], 'data2': range (3)}) print (df1) print (df2) 

Результатом приведенного выше кода является:

  Ключевые данные 10 b 01 b  12 a 23 c 34 a 45 a 56 b 6 Ключевые данные 20 a 01 b 12 d 2  

Теперь давайте объединим DataFrames.

 pd.concat ([df1, df2]) 

Результатом приведенного выше кода является:

  Ключевые данные1 данные20 b 0 NaN1 b 1 NaN2 a 2 NaN3 c 3 NaN4 a 4 NaN5 a 5 NaN6 b 6 NaN0 a NaN 01 b NaN 12 d NaN 2  

Объяснение:

  • Фрейм данных df2 добавляется после df1 . Значения li>
  • NaN означают, что значения для этого столбца отсутствуют в DataFrame.
  1. Метод join () работает лучше всего, когда мы присоединение DataFrames к их индексам.
  2. Метод merge () более универсален и позволяет нам указывать столбцы, помимо индекса для присоединения, для обоих DataFrames.
  3. Мы не можем использовать concat () , если размеры наших DataFrames не совпадают по оси, по которой мы пытаемся объединить.
  4. concat () имеет только внутренние (по умолчанию) и внешние соединения, тогда как merge () имеет левое, правое, внешнее и внутреннее (по умолчанию) соединения.
Оцените статью
nanomode.ru
Добавить комментарий