2017-08-04 33 views
0

我有一個數據幀DF1與一列是「ID」:比較兩列,看到了差距

id 
fgh56t 
67df59 
534we5 
780sda 

我有所有的ID的廣泛列表中的另一個數據幀DF2在一列「ID 「和它的列名‘名’:

id  names 
fgh56t abc 
df439k pqr 
67df59 lmn 
56432o xyz 
534we5 rst 
780sda cde 

的DF2的規模將明顯大於DF1的尺寸更大,因爲DF2包含了所有的IDS可能。我想創建一個結果數據框df3,其中包含所有在df1中不存在的id及其名稱,但存在於df2中。所以結果應該是這樣的:

id  name 
df439k pqr 
56432o xyz 

回答

2

您可以使用isin構建布爾系列和集:

df2[~df2.id.isin(df1.id)] 

#  id names 
#1 df439k pqr 
#3 56432o xyz 
+0

我有類似的問題,你可以考慮一下嗎?沒有人回答。 https://stackoverflow.com/questions/45511223/how-to-perform-single-operation-on-multiple-columns-of-dataframe – BlueQuant

+1

@BlueQuant,請不要垃圾郵件所有這些答案,有人會看你的問題在限定時間內。 – thaavik

2

此外,使用query方法,你可以

In [95]: df2.query('id not in @df1.id') 
Out[95]: 
     id names 
1 df439k pqr 
3 56432o xyz