python pandas - 在将键与另一个数据框匹配后创建一个列
python pandas - creating a column after matching keys with another data frame
我有两个数据框。为了简单起见,我将在这里提供两个虚拟数据框。
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
或尝试提出其他想法,但无法实现。
感谢您的帮助。
pd.merge
或 .map
我们使用您的 id 列作为键和 return 您目标数据帧上的所有匹配值。
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
我有两个数据框。为了简单起见,我将在这里提供两个虚拟数据框。
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
或尝试提出其他想法,但无法实现。
感谢您的帮助。
pd.merge
或 .map
我们使用您的 id 列作为键和 return 您目标数据帧上的所有匹配值。
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