熊猫:垂直查找使用两列和两个数据帧

时间:2017-09-29 09:26:50

标签: python pandas join lookup

鉴于以下数据框架:

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用作参考,因为它们不一致。

1 个答案:

答案 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