Перейти к содержимому

Как объединить 2 датафрейма python

  • автор:

Как объединить две или более серий в Pandas (с примерами)

Вы можете использовать следующий синтаксис для быстрого объединения двух или более серий в один кадр данных pandas:

df = pd.concat([series1, series2, . ], axis= 1 ) 

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: объединить две серии в Pandas

В следующем коде показано, как объединить две серии pandas в один кадр данных pandas:

import pandas as pd #define series series1 = pd.Series(['Mavs', 'Rockets', 'Spurs'], name='Team') series2 = pd.Series([109, 103, 98], name='Points') #merge series into DataFrame df = pd.concat([series1, series2], axis= 1 ) #view DataFrame df Team Points 0 Mavs 109 1 Rockets 103 2 Spurs 98 

Обратите внимание, что если одна серия длиннее другой, Pandas автоматически предоставят значения NaN для отсутствующих значений в результирующем кадре данных:

import pandas as pd #define series series1 = pd.Series(['Mavs', 'Rockets', 'Spurs'], name='Team') series2 = pd.Series([109, 103], name='Points') #merge series into DataFrame df = pd.concat([series1, series2], axis= 1 ) #view DataFrame df Team Points 0 Mavs 109 1 Rockets 103 2 Spurs NaN 

Пример 2: объединить несколько серий в Pandas

В следующем коде показано, как объединить несколько серий в один кадр данных pandas:

import pandas as pd #define series series1 = pd.Series(['Mavs', 'Rockets', 'Spurs'], name='Team') series2 = pd.Series([109, 103, 98], name='Points') series3 = pd.Series([22, 18, 15], name='Assists') series4 = pd.Series([30, 35, 28], name='Rebounds') #merge series into DataFrame df = pd.concat([series1, series2, series3, series4], axis= 1 ) #view DataFrame df Team Points Assists Rebounds 0 Mavs 109 22 30 1 Rockets 103 18 35 2 Spurs 98 15 28 

Как объединить несколько фреймов данных в Pandas (с примером)

Вы можете использовать следующий синтаксис для одновременного объединения нескольких DataFrames в pandas:

import pandas as pd from functools import reduce #define list of DataFrames dfs = [df1, df2, df3] #merge all DataFrames into one final_df = reduce(lambda left,right: pd.merge(left,right,on=['column_name'], how='outer'), dfs) 

В следующем примере показано, как использовать этот синтаксис на практике:

Пример: объединить несколько фреймов данных в Pandas

Предположим, у нас есть следующие три Pandas DataFrames, которые содержат информацию о баскетболистах в разных командах:

import pandas as pd #create DataFrames df1 = pd.DataFrame() df2 = pd.DataFrame() df3 = pd.DataFrame() #view DataFrames print(df1) team points 0 A 18 1 B 22 2 C 19 3 D 14 print(df2) team assists 0 A 4 1 B 9 2 C 14 print(df3) team rebounds 0 C 10 1 D 17 2 E 11 3 F 10 

Мы можем использовать следующий синтаксис, чтобы объединить все три кадра данных в один:

from functools import reduce #define list of DataFrames dfs = [df1, df2, df3] #merge all DataFrames into one final_df = reduce(lambda left,right: pd.merge(left,right,on=['team'], how='outer'), dfs) #view merged DataFrame print(final_df) team points assists rebounds 0 A 18.0 4.0 NaN 1 B 22.0 9.0 NaN 2 C 19.0 14.0 10.0 3 D 14.0 NaN 17.0 4 E NaN NaN 11.0 5 F NaN NaN 10.0 

Конечным результатом является один кадр данных, содержащий информацию из всех трех кадров данных.

Обратите внимание, что значения NaN используются для заполнения пустых ячеек в окончательном кадре данных.

Чтобы использовать значение, отличное от NaN , для заполнения пустых ячеек, мы можем использовать функцию fillna() :

from functools import reduce #define list of DataFrames dfs = [df1, df2, df3] #merge all DataFrames into one final_df = reduce(lambda left,right: pd.merge(left,right,on=['team'], how='outer'), dfs). fillna('none') #view merged DataFrame print(final_df) team points assists rebounds 0 A 18.0 4.0 none 1 B 22.0 9.0 none 2 C 19.0 14.0 10.0 3 D 14.0 none 17.0 4 E none none 11.0 5 F none none 10.0 

Каждая из пустых ячеек теперь заполнена ‘ none ‘ вместо NaN .

Примечание.Полную документацию по функции слияния в pandas можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Pandas: как объединить два фрейма данных с разными именами столбцов

Вы можете использовать следующий базовый синтаксис для объединения двух pandas DataFrames с разными именами столбцов:

pd.merge(df1, df2, left_on='left_column_name', right_on='right_column_name') 

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: объединение двух фреймов данных Pandas с разными именами столбцов

Предположим, у нас есть следующие два Pandas DataFrames:

import pandas as pd #create first DataFrame df1 = pd.DataFrame() #view DataFrame print(df1) team points 0 A 4 1 B 4 2 C 6 3 D 8 4 E 9 5 F 5 #create second DataFrame df2 = pd.DataFrame() #view DataFrame print(df2) team_name rebounds 0 A 12 1 B 7 2 C 8 3 D 8 4 E 5 5 F 11 

Мы можем использовать следующий синтаксис для выполнения внутреннего соединения, используя столбец team в первом фрейме данных и столбец team_name во втором фрейме данных:

#merge DataFrames df3 = pd.merge(df1, df2, left_on='team', right_on='team_name') #view result print(df3) team points team_name rebounds 0 A 4 A 12 1 B 4 B 7 2 C 6 C 8 3 D 8 D 8 4 E 9 E 5 5 F 5 F 11 

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

Обратите внимание, что мы также можем использовать следующий код, чтобы удалить столбец team_name из окончательного объединенного DataFrame, поскольку значения в этом столбце совпадают со значениями в столбце team :

#drop team_name column df3. drop('team_name', axis= 1 , inplace= True ) #view updated DataFrame print(df3) team points rebounds 0 A 4 12 1 B 4 7 2 C 6 8 3 D 8 8 4 E 9 5 5 F 5 11 

Обратите внимание, что столбец team_name был удален из DataFrame.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

�� Как объединить 2 датафрейма pandas: простое руководство с пошаговыми советами

Обе функции объединяют датафреймы по указанному столбцу (в данном случае ‘key’) и возвращают новый датафрейм с объединенными данными.

Детальный ответ

Как объединить 2 датафрейма pandas

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

1. Метод merge()

Метод merge() в pandas позволяет объединить два датафрейма на основе общих значений столбцов. Этот метод позволяет выполнять объединение по различным типам соединений, таким как внутреннее соединение, внешнее соединение, левое соединение и правое соединение.

 import pandas as pd # Создаем первый датафрейм df1 = pd.DataFrame() # Создаем второй датафрейм df2 = pd.DataFrame() # Объединяем датафреймы по столбцу 'id' merged_df = pd.merge(df1, df2, on='id') print(merged_df) 

В данном примере мы создаем два датафрейма df1 и df2 с различными столбцами. Затем мы используем метод merge(), указывая столбец ‘id’ в качестве ключа объединения. Результатом будет новый датафрейм merged_df, содержащий объединенные данные.

2. Метод join()

Метод join() также позволяет объединить два датафрейма на основе общих значений столбцов. Однако, в отличие от метода merge(), метод join() выполняет объединение по индексам датафреймов.

 import pandas as pd # Создаем первый датафрейм df1 = pd.DataFrame() # Создаем второй датафрейм df2 = pd.DataFrame(, index=[2, 3, 4]) # Объединяем датафреймы по индексам joined_df = df1.join(df2, on='id') print(joined_df) 

В данном примере мы используем метод join() для объединения двух датафреймов df1 и df2. Мы указываем столбец ‘id’ в качестве ключа объединения. Результатом будет новый датафрейм joined_df, содержащий объединенные данные.

3. Метод concat()

Метод concat() позволяет объединить два датафрейма путем простого объединения по вертикали или горизонтали. Этот метод не требует наличия общих столбцов или индексов для объединения.

 import pandas as pd # Создаем первый датафрейм df1 = pd.DataFrame() # Создаем второй датафрейм df2 = pd.DataFrame() # Объединяем датафреймы по вертикали concatenated_df = pd.concat([df1, df2], axis=0) print(concatenated_df) 

В данном примере метод concat() используется для объединения двух датафреймов df1 и df2. Мы указываем ось объединения (0 — вертикальное объединение, 1 — горизонтальное объединение). Результатом будет новый датафрейм concatenated_df, содержащий объединенные данные.

Заключение

Объединение двух датафреймов pandas — важная операция в анализе данных. В данной статье мы рассмотрели три основных метода для объединения датафреймов: merge(), join() и concat(). Каждый метод имеет свои особенности и может использоваться в различных ситуациях. Надеюсь, эта статья помогла вам разобраться в объединении датафреймов в pandas.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *