我有两个数据帧,数据帧A
及其子数据帧B
,因为我需要使用匹配列根据A来更改B中的一些值,以将比较结果输入到数据帧B中。 / p>
A:
name id
321 1
18 1
234 2
12 2
234 2
... ...
B:
name id matching
321 2
14 2
13 2
234 1
235 1
我的搜索规则是,如果df B
列名中的单元格(例如name = 321)与A相同,请检查该名称的id(例如B中的id = 1, id = 2 in A)。
此后,将B中具有相同ID的所有项目(例如B中,名称= 321,14,13的所有ID = 2)标记为匹配= 1。
我想要类似的输出
B:
name id matching
321 2 1
14 2 1
13 2 1
234 1 2
235 7 2
我的代码需要很长时间才能工作,但仍达不到我的目标:
for i in range(0,len(A)):
for j in range(0,len(B)):
if A.name[i]== B.name[j]:
B.matching[j] = A.id[i]
我想要类似的输出
OutB:
name id matching
321 2 1
14 2 1
13 2 1
234 1 2
235 7 2
是否有任何功能或算法可以帮助我完成目标?
答案 0 :(得分:1)
pd.merge(A,B, on=name)
应该做您想要的。请参阅文档:
文档中的示例
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
>>> pd.merge(left,right,on='key')
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
3 K3 A3 B3 C3 D3