python pandas-将键与另一个数据框匹配后创建一列

时间:2020-01-25 02:45:05

标签: python pandas dataframe lookup

我有两个数据帧。为了简单起见,我将在此处提供两个虚拟数据帧。

A = pd.DataFrame({'id':[1,2,3], 'name':['a','b','c']})
B = pd.DataFrame({'id':[1,1,1,3,2,3,1]})

现在,我想在数据框B上创建一列,其名称与ID相匹配。 在这种情况下,我的愿望输出将是:

B = pd.DataFrame({'id':[1,1,1,3,2,3,1], 'name':['a','a','a','c','b','c','a'})

我试图使用.applylambda或尝试提出其他想法,但我无法使其工作。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

pd.merge.map,我们使用您的id列作为键,并返回目标数据帧上的所有匹配值。

df = pd.merge(B,A,on='id',how='left')

#or

B['name'] = B['id'].map(A.set_index('id')['name'])

print(df)

   id name
0   1    a
1   1    a
2   1    a
3   3    c
4   2    b
5   3    c
6   1    a

print(B)

   id name
0   1    a
1   1    a
2   1    a
3   3    c
4   2    b
5   3    c
6   1    a