Пропустить до содержимого

Как объединить две таблицы в pandas?

[

Комбинирование данных в pandas с помощью merge(), .join() и concat()

Автор: Кайл Стратис

Series и DataFrame объекты в pandas - это мощные инструменты для исследования и анализа данных. Часть их мощности заключается в многофункциональном подходе к комбинированию отдельных наборов данных. С помощью pandas вы можете объединять, присоединять и конкатенировать ваши данные, позволяя вам объединить и лучше понять ваши данные при их анализе.

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

  • merge() для объединения данных на основе общих столбцов или индексов;
  • .join() для объединения данных по ключевому столбцу или индексу;
  • concat() для объединения DataFrames по строкам или столбцам.

Вы можете попробовать все примеры из этого руководства в интерактивной Jupyter Notebook и с набором данных, доступными по ссылке ниже:

Примечание: Техники, которые вы узнаете ниже, обычно работают как с объектами DataFrame, так и с Series. Но для простоты и краткости примеры будут использовать термин «набор данных», чтобы обозначить объекты, которые могут быть как DataFrames, так и Series.

pandas merge(): объединение данных по общим столбцам или индексам

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

Когда вы хотите объединить объекты данных на одном или нескольких ключах, как в реляционной базе данных, вы используете merge(). Более конкретно, merge() наиболее полезен, когда вы хотите объединить строки, которые содержат общие данные.

С помощью merge() вы можете выполнять соединения один-ко-многим и многие-ко-многим. В один-ко-многим соединении один из ваших наборов данных будет содержать множество строк в объединенном столбце, которые повторяются одними и теми же значениями. Например, значения могут быть 1, 1, 3, 5 и 5. В то же время, столбец объединения в другом наборе данных не будет иметь повторяющихся значений. Рассмотрим пример с значениями 1, 3 и 5.

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

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

Примеры

Ниже приведены примеры кода, которые демонстрируют, как использовать методы merge(), .join() и concat() в pandas:

import pandas as pd
# Создание двух DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3],
'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1, 2, 3],
'C': [7, 8, 9]})
# Пример объединения на основе общего столбца
merged_df = pd.merge(df1, df2, on='A')
print(merged_df)
# Пример объединения на основе общего индекса
merged_df = df1.merge(df2, left_index=True, right_index=True)
print(merged_df)
# Пример использования join
joined_df = df1.join(df2, lsuffix='_left', rsuffix='_right')
print(joined_df)
# Пример использования concat для объединения по строкам
concatenated_rows = pd.concat([df1, df2])
print(concatenated_rows)
# Пример использования concat для объединения по столбцам
concatenated_columns = pd.concat([df1, df2], axis=1)
print(concatenated_columns)

Это только несколько примеров того, как можно использовать методы merge(), .join() и concat() в pandas. Эти методы предлагают разнообразные варианты объединения ваших данных, позволяя вам повысить эффективность и точность ваших аналитических задач.

Заключение

В этом руководстве мы рассмотрели, как объединять данные в pandas с использованием методов merge(), .join() и concat(). Эти методы дают вам гибкость и функциональность для комбинирования ваших данных в разных сценариях.

Вы можете использовать merge() для объединения на основе общих столбцов или индексов, join() для объединения на основе ключевого столбца или индекса, и concat() для объединения по строкам или столбцам. Все эти методы предлагают различные варианты соединения ваших данных, позволяя вам более глубоко изучить и проанализировать ваш набор данных.

Будьте уверены, что вы практикуете эти методы на своих собственных наборах данных, чтобы более глубоко понять их функциональность и применение в вашей работе с данными.