我有两个数据帧。为了简单起见,我将在此处提供两个虚拟数据帧。
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'})
我试图使用.apply
和lambda
或尝试提出其他想法,但我无法使其工作。
谢谢您的帮助。
答案 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