Публичный аккаунт 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! !