连接两个数据帧,但仅用于Python中的公共值

2024-06-01 05:16:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个这样的数据帧:

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])

看起来很有希望,但我不知道如何指定我只想要公共值。我应该在括号里放什么参数


Tags: 数据namenumberphonecodemercedesmikejoe
2条回答

我想你在找pd.merge

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

df1是具有name code phone_number 列的数据 df2是具有code vehicle 列的数据

您可以使用^{}

设置数据

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

相关问题 更多 >