鉴于以下数据框架:
DF1:
ID A B
0 0 138.610513 34.860445
2 2 139.307536 34.919052
DF2:
ID A B CAT
0 0 138.610513 34.860445 a
1 1 138.523152 34.807862 b
2 2 139.307536 34.919052 c
3 3 138.620263 34.883671 b
如何在CAT
中查找值并将其作为新列添加到df1
?
我试过这个:
df1['CAT']=df1[['A'],['B']].map(df2[['A'],['B']])
但我明白了:
TypeError: unhashable type: 'list'
预期产出:
DF1:
ID A B CAT
0 0 138.610513 34.860445 a
2 2 139.307536 34.919052 c
这只是一个测试用例。在我真正的问题中,我不能将ID用作参考,因为它们不一致。
答案 0 :(得分:1)
使用merge
。看起来id
也是映射的。
In [4820]: df1.merge(df2)
Out[4820]:
ID A B CAT
0 0 138.610513 34.860445 a
1 2 139.307536 34.919052 c
如果没有,请在on
中指定密钥,并有选择地在df2
中选择所需的列
In [4825]: df1.merge(df2[['A', 'B', 'CAT']], on=['A', 'B'])
Out[4825]:
ID A B CAT
0 0 138.610513 34.860445 a
1 2 139.307536 34.919052 c