Публичный аккаунт WeChat: «Python Reading Finance»
Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в публичном аккаунте
Для облегчения обслуживания данные общих компаний хранятся в отдельных таблицах в базе данных.Например, одна таблица используется для хранения основной информации обо всех пользователях, а одна таблица используется для хранения статуса потребления пользователей. Поэтому при ежедневной обработке данных часто необходимо совмещать две таблицы.сращены вместеИспользуйте, такая операция соответствует SQL.join
, в пандах используетсяmerge
реализовать. В этой статье речь пойдет оmerge
главный принцип.
В разделе введения выше говоритсяmerge
Используется для склейки двух таблиц, поэтому при склейке естественно нужно объединить информацию о пользователекорреспонденция один на одинсращивание, поэтому две склеиваемые таблицы должны иметь общую идентификацию пользователяключ. Подводя итог, весьmerge
процесс заключается в преобразовании информациисовпадение один к одномупроцесс, описанный нижеmerge
четыре типа'inner'
,'left'
,'right'
и'outer'
.
1. внутренний
merge
из'inner'
типвнутреннее соединение, это займетПересечение ключей двух таблицДелайте сшивание. Что это обозначает? Ниже приведена пошаговая разборка в графическом виде.
Во-первых, у нас есть следующие данные, данные слева и справа представляют собой данные пользователя.основная информацияиинформация для потребителей, ключ, соединяющий две таблицы,userid
.
теперь используйте'inner'
способ сделатьmerge
In [6]: df_1.merge(df_2,how='inner',on='userid')
Out[6]:
userid age payment
0 a 23 2000
1 c 32 3500
Схема процесса:
① Возьмите ключи от двух столов.перекресток,здесьdf_1
иdf_2
изuserid
Пересечение ул.{a,c}
②Соответствующее сопоставление
③ Результаты
Краткое описание процесса:
Я считаю, что весь процесс понять не сложно.Приведенная выше демонстрация состоит в том, что под одним и тем же ключом две таблицы соответствуют только одним данным (один пользователь соответствует одной записи потребления), то, еслиОдин пользователь соответствует нескольким записям потребленияЕсли да, то как это сочетается?
Предположим, что текущие данные становятся следующими, вdf_2
, есть два иa
Соответствующие данные:
также использоватьinner
способ сделатьmerge
:
In [12]: df_1.merge(df_2,how='inner',on='userid')
Out[12]:
userid age payment
0 a 23 2000
1 a 23 500
2 b 46 1000
3 c 32 3500
Кроме всего процессаСоответствующий этап сопоставления, остальные в основном такие же, как указано выше.
Схема процесса:
① Возьмите ключи от двух столов.перекресток,здесьdf_1
иdf_2
изuserid
Пересечение ул.{a,b,c}
② Когда соответствующий матч сделан, из-заa
Имеются две соответствующие записи потребления, поэтому при склейке будет отображаться таблица с базовой информацией о пользователе.a
соответствующие данныеСкопируйте еще одну строку, чтобы она соответствовала справа.
③ Результаты
2. левый и правый
'left'
и'right'
изmerge
Способ на самом деле аналогичный, соответственно называетсялевое соединениеиправильное соединение. Эти два метода могут быть преобразованы друг в друга, поэтому здесь они представлены вместе.
'left'
:merge
когда, сКлюч таблицы слева — эталонСделайте сопряжение, если ключа в таблице слева нет, справа используйте отсутствующее значениеNaN
заполнение.
'right'
:merge
когда, сКлюч таблицы справа является эталономСделайте сопряжение, если ключа в таблице справа нет, слева используйте отсутствующее значениеNaN
заполнение.
Что это обозначает? Чтобы объяснить это конкретно на примере, это демонстрационные данные
теперь используйте'left'
способ сделатьmerge
In [21]: df_1.merge(df_2,how='left',on='userid')
Out[21]:
userid age payment
0 a 23 2000.0
1 b 46 NaN
2 c 32 3500.0
3 d 19 NaN
Схема процесса:
①Сопряжение выполняется на основе всех ключей в таблице слева. На рисунке, посколькуe
Нет в таблице слева, поэтому сопряжение выполняться не будет.
②Если в таблице справаpayment
Столбцы объединяются в левую таблицу с отсутствующими значениями для тех, у которых нет соответствующих значений.NaN
заполнение
Краткое описание процесса:
за'right'
Типmerge
и'left'
На самом деле это почти то же самое.Пока позиции двух таблиц меняются местами, результаты, возвращаемые двумя методами, одинаковы (), а именно:
In [22]: df_2.merge(df_1,how='right',on='userid')
Out[22]:
userid payment age
0 a 2000.0 23
1 c 3500.0 32
2 b NaN 46
3 d NaN 19
Что касается'left'
и'right'
(и даже описанные ниже'outer'
) связанные ключи - это случаи один ко многим, принцип и выше'inner'
аналогичны и здесь повторяться не будут.
3. внешний
'outer'
давнешнее соединение, в процессе сварки потребуетсяОбъединение ключей двух таблицДелайте сшивание. Видеть текст недостаточно интуитивно, давайте возьмем пример!
Или используйте демонстрационные данные, использованные выше
на этот раз использовать'outer'
провестиmerge
In [24]: df_1.merge(df_2,how='outer',on='userid')
Out[24]:
userid age payment
0 a 23.0 2000.0
1 b 46.0 NaN
2 c 32.0 3500.0
3 d 19.0 NaN
4 e NaN 600.0
Схема выглядит следующим образом:
① Возьмите объединение двух ключей таблицы, вот{a,b,c,d,e}
② Объедините столбцы данных двух таблиц и используйте пропущенные значения для мест, которые не совпадают.NaN
заполнять
Друзья, которые могут прочитать это, также должны в основном пониматьmerge
Весь процесс, в заключение,merge
Разница между разными типами заключается в том, что при сращиванииНабор ключей для двух выбранных столов разный. О пандахmerge
Представляйте здесь!
Нелегко быть оригинальным. Если вы считаете, что это полезно, надеюсь, вы поставите лайк. Спасибо, старые утюги.
Отсканируйте код, чтобы подписаться на официальный аккаунт"Питон Чтение Финансов", получите галантерейные товары в первый раз, и вы также можете присоединиться к группе обмена обучением Python! !