如何在两个不同的数据帧中搜索一个值并将其添加到第三个数据帧中?

2024-10-01 22:29:10 发布

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

我有一个数据帧,在其中我想找到一个客户机号码,可以在两个不同的数据帧中的任何一个。我的问题是,我如何快速地创建它,而不是合并两个数据帧,并在询问哪一个是null而不是usefuel之后。你知道吗

df0

ClientName     City         State
JohnSmith      Dallas         TX
JaneDoe        Dallas         TX
LucasAult      Dallas         TX
CarsonSeibert  Dallas         TX

待查看的df1

ClientName     CLientNumber
JohnSmith      100
JaneDoe        101

待查看的df2

ClientName     CLientNumber
LucasAult        102
CarsonSeibert    103

预期结果

ClientName     City         State   ClientNumber
JohnSmith      Dallas         TX       100
JaneDoe        Dallas         TX       101
LucasAult      Dallas         TX       102
CarsonSeibert  Dallas         TX       103

到目前为止,我提出的解决方案是

df0 = pd.merge(df0, df1, how ='left')
df0 = pd.merge(df0, df2, how ='left')

df0['ClientNumber'] = np.where(df0['ClientNumber'] == None, df1['ClientNumber'], df0['ClientNumber'])

Tags: 数据citydf1statedf2txclientnamedf0
2条回答

map在一个唯一键上进行连接就足够了:

d = {**df1.set_index('ClientName').CLientNumber, 
     **df2.set_index('ClientName').CLientNumber}

df0['ClientNumber'] = df0['ClientName'].map(d)

      ClientName    City State  ClientNumber
0      JohnSmith  Dallas    TX           100
1        JaneDoe  Dallas    TX           101
2      LucasAult  Dallas    TX           102
3  CarsonSeibert  Dallas    TX           103

您可以简单地concatdf1df2,然后用df0执行merge

df0.merge(pd.concat([df1,df2]), on='ClientName')

输出:

ClientName     City         State   ClientNumber
JohnSmith      Dallas         TX       100
JaneDoe        Dallas         TX       101
LucasAult      Dallas         TX       102
CarsonSeibert  Dallas         TX       103

相关问题 更多 >

    热门问题