Python Pandas - объединяет два фрейма данных с разным количеством строк и столбцов - PullRequest
0 голосов
/ 15 июня 2019

У меня есть два фрейма данных с разными номерами строк и столбцов. Обе таблицы имеют несколько общих столбцов, включая «Идентификатор клиента». Обе таблицы выглядят следующим образом: 11697 строк × 15 столбцов и 385839 строк × 6 столбцов соответственно. Идентификатор клиента может повторяться во второй таблице. Я хочу объединить обе таблицы и объединить похожие столбцы, используя идентификатор клиента. Как я могу сделать это с Python PANDAS. Одна таблица выглядит так -

enter image description here

а другой выглядит так - enter image description here

Я использую код ниже -

 pd.concat([df1, df2], sort=False)

Просто хотел убедиться, что я не теряю никакой информации? Как я могу проверить, есть ли несколько записей с одним идентификатором и как я могу объединить его в один результат?

РЕДАКТИРОВАТЬ -

Когда я использую приведенный выше код, здесь до и после значений NA'S в наборе данных - enter image description here

Может кто-нибудь сказать, где я ошибся?

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

pd.concat поможет вам в этом, просто установите ось на 1, чтобы объединить вторую ось (столбцы), вы должны сначала установить индекс на customer_id для обоих фреймов данных

import pandas as pd
pd.concat([df1.set_index('customer_id'), df2.set_index('customer_id')], axis = 1)

если вы хотите опустить строки с пустыми значениями в результате вашего объединения, используйте dropna:

pd.concat([df1.set_index('customer_id'), df2.set_index('customer_id')], axis = 1).dropna()
0 голосов
/ 15 июня 2019

Я полагаю, что DataFrame.merge будет работать в этом случае:

# use how='outer' to preserve all information from both DataFrames
df1.merge(df2, how='outer', on='customer_id')

DataFrame.join также может работать, если оба индекса DataFrames имеют свои индексы customer_id (это также проще):

df1 = df1.set_index('customer_id')
df2 = df2.set_index('customer_id')
df1.join(df2, how='outer')
...