2017-08-22 185 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發現你的答案最有幫助,他可以接受。 –