Python 从一个数据帧中查找另一个数据帧中缺少的值的正确方法

Python 从一个数据帧中查找另一个数据帧中缺少的值的正确方法,python,pandas,merge,Python,Pandas,Merge,我有一个包含两个字段的数据框,包括名为“name”和名为“df1”的“team”。我想根据每个人的用户id添加一个名为“用户id”的附加列,该列可以在基于该人的“团队”的单独数据框中找到 “用户id”值可以在其他数据框中找到,这些数据框由团队字段分隔,名为“df_a”、“df_b”、“df_c”。。。等等。这些数据帧中的每一个都包含相同的三个字段(“名称”、“团队”和“用户id”),但每一个都只包含来自该团队的名称,并且每个数据帧都是完整的(在任何列中都找不到NAN) 我想知道最具python风

我有一个包含两个字段的数据框,包括名为“name”和名为“df1”的“team”。我想根据每个人的用户id添加一个名为“用户id”的附加列,该列可以在基于该人的“团队”的单独数据框中找到

“用户id”值可以在其他数据框中找到,这些数据框由团队字段分隔,名为“df_a”、“df_b”、“df_c”。。。等等。这些数据帧中的每一个都包含相同的三个字段(“名称”、“团队”和“用户id”),但每一个都只包含来自该团队的名称,并且每个数据帧都是完整的(在任何列中都找不到NAN)

我想知道最具python风格的方法是使用我的团队数据帧中的数据将“user_id”列添加到df1(可能有许多团队数据帧,但每个都相对较小)。到目前为止,我已经尝试循环遍历每个团队数据帧,并使用内部合并和左侧合并,基于“name”字段将它们合并到df1中,但输出结果要么是原始数据帧中缺少行,要么是输出许多“user_id_x”、“user_id_y”列,其中填充了nan

数据帧示例:

df1:

df_a:

df_b:

               name  team     user_id  
0          jane doe     b        6325
1           amy doe     b        6164
2         sally doe     b        6294
df_c:

               name  team     user_id 
0         steve doe     c       52956
1        jane smith     c       83635  
2      john johnson     c       54871
这是我从每个团队数据帧中获取用户id值后所需的输出:

               name  team      user_id   
0          john doe     a        15368
2          jane doe     b         6325
3           amy doe     b         6164  
4        jane smith     c        83635  
5      john johnson     c        54871
如果有什么我可以澄清的,请告诉我,并提前感谢

试试这个

main_df=pd.concat([df_a,df_b,df_c],ignore_index=True)
df=pd.merge(df,main_df,how='left',on=['name','team'])
连接所有df_x数据帧,然后执行左连接

输出:

           name team  user_id
0      john doe    a    15368
1      jane doe    b     6325
2       amy doe    b     6164
3    jane smith    c    83635
4  john johnson    c    54871
打印输出(主df):

main_df=pd.concat([df_a,df_b,df_c],ignore_index=True)
df=pd.merge(df,main_df,how='left',on=['name','team'])
           name team  user_id
0      john doe    a    15368
1      jane doe    b     6325
2       amy doe    b     6164
3    jane smith    c    83635
4  john johnson    c    54871
           name team  user_id
0      john doe    a    15368
1    john smith    a    15382
2   sally smith    a    15212
3      jane doe    b     6325
4       amy doe    b     6164
5     sally doe    b     6294
6     steve doe    c    52956
7    jane smith    c    83635
8  john johnson    c    54871