2017-08-22 189 views
0

我想比较两个数据帧df1和df2中的名称列,从数据帧df1输出匹配的行并将结果存储在新的数据帧df3中。我如何在熊猫中做到这一点?基于列合并两个数据帧

DF1

place name qty unit 
NY Tom 2 10 
TK Ron 3 15 
Lon Don 5 90 
Hk Sam 4 49 

DF2

place name price 
PH Tom 7  
TK Ron 5  

结果:

DF3

place name qty unit 
NY Tom 2 10 
TK Ron 3 15 

回答

0

选项1

df.isin使用:与df.merge

In [1362]: df1[df1.name.isin(df2.name)] 
Out[1362]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 

选项2

执行一内加入:

In [1365]: df1.merge(df2.name.to_frame()) 
Out[1365]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 

选项3

使用df.eq

In [1374]: df1[df1.name.eq(df2.name)] 
Out[1374]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 
+0

谢谢。这工作。 – Sun

0

你想要的东西称为内连接。

df1.merge(df2,on = 'name') 

place_x name qty unit place_y price 
NY  Tom  2 10  PH  7 
TK  Ron  3 15  TK  5 

_x_y当你有帧被合并在两个数据列发生。

+0

我已经在我的回答中介绍了这一点,此外,它的列数超过了OP的要求。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ如果它对另一个用户有帮助,我会把它留下。如果OP发现你的答案最有帮助,他可以接受。 –