Si tengo distintos dataframes en Pandas
, ¿Cómo puedo unirlos?
Например, я создаю три DataFrame
:
import pandas as pd
import numpy as np
df_1 = pd.DataFrame({"fruta": ["manzana", "pera", "platano", "naranja", "aguacate"],
"precio": [0.20, 0.45, 0.15, 0.12, 0.62]})
df_2 = pd.DataFrame({"stock": [10, 20, 25, 12, 40]})
df_3 = pd.DataFrame({"ventas_totales":[3, 5, 2, 3, 6],
"ingresos_ventas": [120, 110, 64,44, 147]})
Есть ли способ объединить (объединить) их в Pandas
, или это невозможно, и я должен использовать цикл for
?
И если у них есть идентификатор (ID) , можно ли присоединиться к ним на основе столбца, как в SQL
?
У Pandas есть несколько способов объединения фреймов данных, в зависимости от того, что вы хотите сделать, один или другой будет лучше для вас. Теперь я объясню два основных способа и их результаты, используя пример в вопросе.
конкатенировать
Если вы хотите присоединиться к разным фреймам данных, и все они имеют одинаковый порядок (то есть, если данные строки 1 фрейма данных 1 соответствуют данным из фрейма данных 2 и фрейма данных 3), это будет сделано следующим образом:
Вылет из:
С помощью
axix=1
мы указываем, что мы хотим соединить его по строкам, если мы поместимaxis=0
его, он будет соединен по столбцам.Преимущество:
.append()
Недостатки:
Синонимом этой формы будет:
Результат тот же, хотя как видите писать более утомительно
Использовать объединение по ID
В этом случае мы предполагаем, что у нас есть столбец с идентификаторами, которые идентифицируют каждую строку, и что они не упорядочены, то есть идентификатор строки 1 в DataFrame 1, мы можем найти его в строке «X» DataFrame 2. Привожу пример кода:
В этом случае мы не можем использовать
pandas.concat()
. Чтобы присоединиться к кадрам данных, мы можем использовать метод.merge()
, который точно такой же, как функцияpandas.merge()
, и он позволит нам выбрать столбец, по которому мы хотим присоединиться, и способ присоединения:Вылет из:
Параметром
on=
указываем имя столбца, по которому хотим объединиться, а параметромhow=
тип объединения, которое работает так же, как и вSQL
. Pandas поддерживает типы объединенияinner
,left
,right
external` .В случае, если мы хотим создать
merge()
более двух DataFrames, нам нужно только связать методы:Вылет из:
Подчеркните, что с помощью
merge()
мы можем составлять разные виды союзов, в стилеSQL
Эти методы чрезвычайно полезны, если вы хорошо знаете, как их использовать в
Pandas
. Вот официальная документация панд, если вы хотите расширить и увидеть другие параметры: