Объединение двух фреймов данных, но только для общих значений в Python

#python #dataframe #concat

#python #фрейм данных #объединение

Вопрос:

У меня есть 2 фрейма данных, подобных этому:

 name    code phone_number 
Joe     BX13    03453
Bill    C308    321356
Donald  H314    34532
Mike    J4D6    2134

code vehicle
C308 Mercedes
H314 BMW
  

Я хотел бы объединить их, но только для общих значений в определенном столбце, чтобы это выглядело так:

 name    code vehicle
Bill    C308 Mercedes
Donald  H314   BMW

df3=pd.concat([df1, df2])
  

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

Комментарии:

1. Вы не хотите phone_number , чтобы в объединенном фрейме данных?

2. @MichaelSzczesny Я бы предпочел не иметь его, если бы у меня был выбор

Ответ №1:

Я полагаю, вы ищете pd.merge.

 df2=pd.merge(df2,df1,on="code",how="inner").drop(columns="phone_number")
  

df1 — это данные со name code phone_number столбцами
, df2 — это данные со code vehicle столбцами

Ответ №2:

Вы можете использовать df.merge

Настройка ваших данных

 import pandas as pd
import io
t = '''
name,code,phone_number
Joe,BX13,3453
Bill,C308,321356
Donald,H314,34532
Mike,J4D6,2134'''
df1 = pd.read_csv(io.StringIO(t))

t = '''
code,vehicle
C308,Mercedes
H314,BMW'''
df2 = pd.read_csv(io.StringIO(t))
  

Теперь вы можете объединить два фрейма данных с выбранными столбцами

 df1[['name','code']].merge(df2, on='code', how='inner')
  

Выход:

      name  code   vehicle
0    Bill  C308  Mercedes
1  Donald  H314       BMW
  

Комментарии:

1. По-видимому df.merge , это ключ. Я ошибался, ища df.concat .